當前位置:首頁 » 編程語言 » sql匹配字元串

sql匹配字元串

發布時間: 2022-02-28 17:42:33

1. sql 多個欄位匹配

我來回答吧:
你那種方法不對呀 ,你為什麼不能換個思維吶,
A in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位A等於 a、b、c、d、e、f任何一個值就條件成立。
B in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位B等於 a、b、c、d、e、f任何一個值就條件成立。
C in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位C等於 a、b、c、d、e、f任何一個值就條件成立。
D in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位D等於 a、b、c、d、e、f任何一個值就條件成立。
E in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位E等於 a、b、c、d、e、f任何一個值就條件成立。
F in (a,b,c,d,e,f) 條件成立 可以 視為 1, 即欄位F等於 a、b、c、d、e、f任何一個值就條件成立。

select * from 你的表名
where
A in (a,b,c,d,e,f) and
B in (a,b,c,d,e,f) and
C in (a,b,c,d,e,f) and
D in (a,b,c,d,e,f) and
E in (a,b,c,d,e,f) and
F in (a,b,c,d,e,f)

欄位A值出現在a,b,c,d,e,f任何一個中,成立
。。。
欄位F值出現在a,b,c,d,e,f任何一個中,成立
用and或者 or連接。

修改如下:

select * from hong
where
num1 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num2 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num3 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num4 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num5 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) and
num6 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6)

或者

select * from hong
where
num1 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num2 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num3 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num4 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num5 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6) or
num6 in (haoma1,haoma2,haoma3,haoma4,haoma5,haoma6)

2. sql語句中查找某欄位中含有某字元串的語句怎麼寫

select filename from oa_file where filename not like '%[!-¥]%'

或者這個:

select filename from oa_file where filename not like '%[!-?]%'

出現的問題就是問號和問好也是不一樣的,比如說英文標點半形的問號是「?」,英文標點全形的問號是「?」但是中文半形問號是「?」中文全形的問號是「?」

這些都是不一樣的,你搜出來的都是帶有英文半形問號的文件。

(2)sql匹配字元串擴展閱讀:

SQL中的欄位「包含」與「包含於」字元串的寫法

1、查詢表中某欄位值「包含」某字元串的所有記錄的方法

假如表中有一個name欄位,查詢name包含「張三」的所有記錄,可以這樣寫sql:

Stirng strsql="SELECT * FROM 表名 WHERE name LIKE 』%"+"張三"+"%』";

2、查詢某欄位值「包含於」某個字元串的所有記錄的方法

如果查詢表中name欄位包含於字元串「張三是個好學生」的所有記錄,可以這樣寫sql:

String strsql="SELECT * FROM 表名 WHERE INSTR(』張三是個好學生』,name)>0";

即可查詢,記錄中的name欄位值中包括:張、三、是、個、好、學、生、張三、......等所有記錄。

註:以上sql字元串中請將全形符號改為半形符號。

3. sql字元串匹配用什麼符號

欄位名 like '%字元串%'

4. 如何用sql查詢一個字元串的一部分

select substr('2009/2/5',1,6) from table_name

substr(A,m,n)函數,是將欄位A從第m個字元截取n個字元。

5. sql 在一個字元串中查找特定的字元串

like '25,%' or like '%,25,%' or like '%,25'

補充:
寫成存儲過程
或拼接sql字元串

//自己動手,豐衣足食!阿彌陀佛!!!!

6. sql匹配多組字元查詢

select a.name1,b.name2
from a
left join b on a.name1 like '%'||b.name2||'%'

7. SQL語言的字元串匹配運算符是

以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。
sqlserver:
select
'123'+'456';
oracle:
select
'123'||'456'
from
al;

select
concat('123','456')
from
al;
mysql:
select
concat('123','456');
注意:oracle和mysql中雖然都有concat,但是oracle中只能拼接2個字元串,所以建議用||的方式;mysql中的concat則可以拼接多個字元串。

8. sql 正則表達式匹配

  • 當我們要進行一些簡單的糊塗查詢時用百分號(%),通配符(_)就可以了.其中%表達任意長度的字元串,_表示任意的某一個字元.

比如

select*fromempwhereenamelike's%'orenamelike's_';

但如果在一些復雜的查詢中關用這兩個符號sql語句就會非常復雜,而且也不一定能實現.從Oracle 10g開始引入了在其他程序語言中普通使用的正則表達式.

主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四個正則表達式函數.

  • 正則表達式中的元字元:

元字元 意思 例子

說明要匹配的字元是一個特殊字元、常量或者後者引用。(後引用重復上一次的匹配)

匹配換行符
\ 匹配
匹配(匹配 )


^ 匹配字元串的開頭位置 ^a匹配arwen.但不匹配barwen.

$ 匹配字元串的末尾位置 en$匹配arwen.但不匹配arwenb.

* 匹配前面的字元0次或多次 a*rwen可以匹配rwen或aaarwen.

+ 匹配前面的字元1次或多次 a+rwen可以匹配arwen或aarwen.但不能匹配rwen.

? 匹配前面的字元0次或1次 a?rwen可以匹配arwen或rwen.但不能匹配aarwen.

{n} 匹配前面的字元恰好是n次,其中n是整數 ar{2}wen可以匹配arrwen.但不能匹配arwen或arrrwen.

{n,m} 匹配前面的字元至少是n次,最多是m次.如果寫成{n,} 表示最少匹配n次.沒有上限.

ar{1,2}wen可以匹配arwen,arrwen.但不匹配awen或arrrwen.


. 點號,匹配除null,換行以外的任意單個字元 arw.n.可以匹配arwen,arwin.但不能匹配arween或arwn.

(pattern) 括弧中pattern是一個子正則表達式,匹配指定pattern模式的一個子表達式。 其實括弧就像一般語言表達式中的括弧.有時多加些括弧可增強可讀性.另外的用處見下面關於 的描述.

x|y 匹配「或」 x|y可以匹配x或者y

[abc] 可以匹配abc中的任何單個字元 hello[abc]可以匹配helloa,hellob,helloc

[a-z] 可以匹配指定范圍內的任何單個字元 hell[a-z]可以匹配hello或者hellz

[::] 指定一個字元類,可以匹配該類中的任何字元 [:alphanum:]可以匹配字元0-9、A-Z、a-z
[:alpha:]可以匹配字元A-Z、a-z
[:blank:]可以匹配空格或tab鍵
[:digit:]可以匹配數字0-9
[:graph:]可以匹配非空字元
[:lower:]可以匹配小寫字母a-z
[:print:]與[:graph:]類似,不同之處在於[:print:]包括空格字元
[:punct:]可以匹配標點符號.,""等等
[:space:]可以匹配所有的空字元
[:upper:]可以匹配大寫字母A-Z
[:xdigit:]可以匹配十六進制數字0-9、A-F、a-f

這是對前一次匹配命中的一個後引用,其中n是一個正整數 arw(en)1可以匹配arwenen.注意1前面必須是個加括弧的子表達式.

  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_RESULTINTEGER;

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

  1. FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果為hellx world.

如果REGEXP_REPLACE('hello world','o','x'),則結果為hellx wxrld.

如果 REGEXP_REPLACE('hello w


orld','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

SELECTREGEXP_SUBSTR('hello world','l{2}')INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

結果為ll

查詢到匹配的字元串才返回匹配的字元.沒查到就返回空.

9. sql查詢包含字元串任意字元

1、先把你輸入的內容拆分
2、select * from table where name like '%小%' or name like '%明%'
3、出來的結果就是你要的結果

10. 如何用SQL語句判斷字元串

select *
from table1
where char1 like '%mystring%'
『%』表示長度大於等於0的任意字元串,而『?』可以表示一個字元。

熱點內容
android學習源碼 發布:2025-01-11 11:26:23 瀏覽:411
伺服器都壞了如何恢復 發布:2025-01-11 11:24:04 瀏覽:352
微博緩存的圖片能清理嗎 發布:2025-01-11 11:01:49 瀏覽:306
文字加密器 發布:2025-01-11 11:01:08 瀏覽:453
vc60非靜態編譯 發布:2025-01-11 10:51:32 瀏覽:614
電腦上怎麼解壓縮文件 發布:2025-01-11 10:51:31 瀏覽:783
槍戰王者如何用賬號密碼登錄 發布:2025-01-11 10:30:56 瀏覽:938
mysql在linux下安裝 發布:2025-01-11 10:30:49 瀏覽:845
資料庫copy 發布:2025-01-11 10:26:06 瀏覽:534
unity清理緩存 發布:2025-01-11 10:25:23 瀏覽:468