SQL 模糊查詢

2021-08-16 15:18:10 字數 1791 閱讀 8659

執行資料庫查詢時,有完整查詢和模糊查詢之分。

一般模糊語句格式如下:

select 字段 from 表 where 某欄位 like 條件;

其中,關於條件,sql提供了四種匹配模式:

1、%:表示零個或多個字元。

可以匹配任意型別和任意長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。

比如:select * from flow_user where username like '%王%';

將會把flow_user這張表裡面,列名username中還有「王」的記錄全部查詢出來。

另外,如果需要找到flow_user這張表裡面,欄位username中既有「唐」,又有「英」的記錄,可以使用and條件,

select * from flow_user where username like '%英%' and username like '%唐%';

則可以查詢出來所有包含「英」和「唐」的所有內容,「英」和「唐」所在的前後位置無所謂。

若是用select * from flow_user where username like '%英%唐%';

可以查出來包含「英唐」的內容,但是查不出來「唐英」的內容。

2、_:表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度:

select * from flow_user where username like '_英_';

只能找到「王英琨」這樣username為三個字且中間乙個字是「英」的內容。

再比如:select * from flow_user where username like '英__';

只能找到「英雄點」這樣username為三個字且第乙個字是「英」的內容。

3、:表示括號內所列字元中的乙個(類似正規表示式)。指定乙個字元、字串或範圍,要求所匹配的物件為他們中的任乙個。

select * from flow_user where username like'[王李張]飛';

將找出「王飛」「李飛」「張飛」(而不是「張王李飛」)。

如內有一系列字元(01234,abcde之類的)則可略寫為「0-4」,「a-e」:

select * from flow_user where username like '老[0-9]';

將找出「老1」、「老2」、……、「老9」;

oracle 10g以上的版本用法為:  

select * from flow_user where regexp_like(username, '[張王李]飛');

4、[^]:表示不在括號所列之內的單個字元。其取之和相同,但它所要求匹配物件為指定字元以外的任乙個字元。

select * from flow_user where username like'[^王李張]飛';

將找出不是「王飛」「李飛」「張飛「的」趙飛「、」吳飛「等。

注:oracle like 不支援正則,你可以使用支援like的正則regexp_like

5、查詢內容包含萬用字元時:

由於萬用字元的緣故,導致查詢特殊字元「%」、「_」、「[」的語句無法正常實現,把特殊字元用「」括起來便可以正常查詢。

function sqlencode(str)

str=replace(str,"[","[") '此句一定要在最前

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

####################################

**:

sql 模糊查詢

一般模糊語句如下 select 字段 from 表 where 某欄位 like 條件 其中關於條件,sql提供了四種匹配模式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號 表示。比如 select from user where u name lik...

SQL模糊查詢

sql提供了四種匹配模式 1.表示任意 0個或多個字元。如下語句 select from user where name like 三 將會把 name為 張三 三腳貓 唐三藏 等等有 三 的全找出來 2.表示任意單個字元。語句 select from user where name like 三 ...

SQL模糊查詢

sql提供了四種模糊匹配方式 1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請運用兩個百分號 表示。比如 select from user where u name like 三 將會把u name為 張三 張貓三 三腳貓 唐三藏 等等有 三 的記錄全找出來。另外,如果...