⑴ sql語句。instr完全匹配
這個你多試驗一下就能找到答案了。
⑵ 查詢字元串子串的SQL語句
思路1:
select * from table
從獲取的結果中:R;48;39;13;15;8;3;1截取字元串。
使用substring(.....)方法。
思路2:
Access本身好像不支持substring(),你可以這樣:
select right(left(Data,7),2) as columnName from table。
手寫的,沒測試過,希望對你有幫助,祝你好運!!!
⑶ 如何在sql語句中使用正則表達式
sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四個正則表達式函數。
1、regexp_like:
regexp_like(x,pattern[,match_option]),查看x是否與pattern相匹配,該函數還可以提供一個可選的參數match_option字元串說明默認的匹配選項。match_option的取值如下:
'c' 說明在進行匹配時區分大小寫(預設值);
'i' 說明在進行匹配時不區分大小寫;
'n' (.)點號能表示所有單個字元,包括換行(俺還不知道什麼地方有用到換行.只知道sql裡面可以用chr(10)表示換行、
'm' 字元串存在換行的時候當作多行處理.這樣$就可匹配每行的結尾.不然的話$只匹配字元串最後的位置、
示例:
select * from emp where regexp_like(ename,'^a[a-z]*n$');
可以查找ename中以a開頭以n結尾的行.例如ename為arwen或arwin或anden.但Arwen不能被匹配.因為默認是區分大小寫.如果是
select * from emp where regexp_like(ename,'^a[a-z]*n$','i')
則可以查找ename為Arwen的行記錄。
2、regexp_instr:
REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[, match_option]]]])用於在x中查找pattern。返回pattern在x中出現的位置。匹配位置從1開始。可以參考字元串函數 INSTR(),參數相關:
'start' 開始查找的位置;
'occurrence' 說明應該返回第幾次出現pattern的位置;
'return_option' 說明應該返回什麼整數。若該參數為0,則說明要返回的整數是x中的一個字元的位置;若該參數為非0的整數,則說明要返回的整數為x中出現在pattern之後 的字元的位置;
'match_option' 修改默認的匹配設置.與regexp_like裡面的相同.
示例:
DECLARE
V_RESULT INTEGER ;
BEGIN
SELECT REGEXP_INSTR('hello world','o',1,1,0) INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
結果為5,即字母o第一個次出現的位置。
如果regexp_instr('hello world','o',1,1,n)其中n為除0之外的整數。比如1,3。則結果為6.表示第一次出現字母o的後面一個字元的位置。
如果regexp_instr('hello world','o',1,2,0)則結果為9.表示第二次出現字母o的位置.
3、regexp_replace:
REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[, match_option]]]])用於在x中查找pattern,並將其替換為replae_string。可以參考字元串函數 REPLACE(),參數同REGEXP_INSTR函數
示例:
DECLARE
V_RESULT varchar2(90);
BEGIN
SELECT REGEXP_REPLACE('hello world','o','x',1,1) INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
結果為hellx world.
如果REGEXP_REPLACE('hello world','o','x'),則結果為hellx wxrld.
如果 REGEXP_REPLACE('hello world','o','x',1,2)則結果為hello wxrld.
4、regexp_substr:
REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]])用於在x中查找pattern並返回。可以參考字元串函數 SUBSTR(),參數同REGEXP_INSTR函數.
例如:
DECLARE
V_RESULT VARCHAR2(255);
BEGIN
SELECT REGEXP_SUBSTR('hello world','l{2}') INTO V_RESULT
FROM DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END ;
結果為ll
查詢到匹配的字元串才返回匹配的字元.沒查到就返回空。
⑷ sql語句,怎樣判斷一個欄位中是否存在某一個值
可以參考下面的描述:
INSTR(C1,C2,I,J)
在一個字元串中搜索指定的字元,返回發現指定的字元的位置;
C1 被搜索的字元串
C2 希望搜索的字元串
I 搜索的開始位置,默認為1
J 出現的位置,默認為1
SQL> select instr(』oracle traning』,』ra』,1,2) instring from al;
INSTRING
---------
9
(4)sql語句instr擴展閱讀:
基本語句
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把數據欄的值相加
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
⑸ ORACLE SQL語句 欄位類型有哪些
1、需要用到兩個字元類函數instr和substr,具體用法介紹如下:
函數:字元定位函數
instr
語法:instr(待處理的字元串,需要查找的字元,開始查找的起始位置,第n次出現)
返回值:字母所在的位置,沒有返回
0;
函數:字元定位函數
substr
語法:substr('要切割的值',從第幾個位置開始切割,切割幾位);
返回值:截取的字元串。
2、該題實現步驟,以欄位a內容為'武漢一一科技公司(2009年2月注銷)'為例:
第一步:先從欄位a的欄位第一個字元往前找左括弧'('
第一次出現的位置,如下:
select
instr('武漢一一科技公司(2009年2月注銷)',
'(',
1,
1)
--
9
from
al;
第二步:從欄位第一個字元開始,一直找出左括弧'('的前一位就行,如下:
select
substr('武漢一一科技公司(2009年2月注銷)',
1,
instr('武漢一一科技公司(2009年2月注銷)',
'(',
1,
1)
-
1)
from
al;
註:如果某某公司名稱本身可能含有括弧的話,建議從最後一個字元倒著往回找左括弧出現第一次的位置,即
select
instr('武漢一一科技公司(2009年2月注銷)',
'(',
-1,
1)
--
9
from
al;
3、最終答案
select
select
substr(a,
1,
instr(a,
'(',
-1,
1)
-
1)
from
table
;
⑹ SQL語句如何取出一個欄位中值
oracle用substr(原字元串,起始位置,[截取長度])和instr(原字元串,查找字元串,[起始位置],[第n個])函數,[]內的是可選參數
mysql用substring和instr()函數
大概思路是截取原字元串,從(開始,到)結束,
用instr定位(和),用substr截取
比如原字元串在變數str中
以oracle為例:substr(str,instr(str,'('),instr(str,')')-instr(str,'('))
⑺ 在sql語句中怎麼判斷一個欄位是否包含在另一個字元串中
思路是,讀取B.name字元串後進行字元串的的分割 name.,然後最後執行模糊查詢A表,可以這樣
WHERE (A.nameLIKE '%查%') AND (A.nameLIKE '%體%')
只能說完全用sql語句實現,有點難吧!
string name = "查體";
char[] NameChar = name.ToArray();
string SqlStr = "select * from A ";
for (int i = 0; i < NameChar.Count(); i++)
{
if (i == 0)
{
SqlStr += "where A.name LIKE'%" + NameChar[0] + "%'";
}
else
{
SqlStr += " and A.name LIKE'%" + NameChar[i] + "%'";
}
}
可以告訴你,沒有關聯查一個表還行,兩個表都來不太可能。
⑻ SQL語句求助 SUBSTR,INSTR的相關推薦
create or replace function test(URL varchar2)
RETURN VARCHAR2
IS
Real_URl varchar2(100);
begin
if instr(URL,chr(63))>0 then
Real_URl :=substr(url,1,instr(url,chr(63))-1);
else
Real_URl := URL;
end if ;
return(Real_URl);
end test;
⑼ sql 怎麼取 字元串的前幾位
sql中,使用LEFT函數即可取到字元串的前幾位。
LEFT(c, number_of_char)用於返回某個被請求的文本域的左側部分,其中c代表被請求的文本域,number_of_cha代表需要取出的字元串位數。如「LEFT("..com", 6)」即可取得字元串""。
(9)sql語句instr擴展閱讀:
sql中,常用函數介紹:
1、AVG():返回平均值
2、COUNT():返回行數
3、FIRST():返回第一個記錄的值
4、LAST():返回最後一個記錄的值
5、MAX():返回最大值
6、MIN():返回最小值
7、SUM():返回總和
8、UCASE():將某個欄位轉換為大寫
9、LCASE():將某個欄位轉換為小寫
10、MID():從某個文本欄位提取字元
11、LEN():返回某個文本欄位的長度
12、ROUND():對某個數值欄位進行指定小數位數的四捨五入
13、NOW():返回當前的系統日期和時間
14、FORMAT():格式化某個欄位的顯示方式
15、INSTR():返回在某個文本域中指定字元的數值位置
16、LEFT():返回某個被請求的文本域的左側部分
17、RIGHT():返回某個被請求的文本域的右側部分