SQL怎麼實現模糊查詢
阿新 • • 發佈:2020-12-06
模糊查詢的語句一般如下:
SELECT 欄位 FROM 表 WHERE 某欄位 LIKE 條件;
關於條件部分,有以下匹配模式:
1. %
:表示零個或多個字元。
可以匹配任意型別和任意長度的字元,有些情況下若是中文,請使用兩個百分號(%%
)表示。
select * from user where username like '%張%';
將會把user
這張表裡面,列名username
中含有張
的記錄全部查詢出來。
如果需要找到user
這張表裡面,欄位username
中既有張
,又有李
的記錄,可以使用and
條件:
select * from user where username like '%張%' and username like '%李%';
可以查詢出來所有包含張
和李
的所有內容,張
和李
所在的前後位置無所謂。
select * from user where username like '%李%張%';
查出來包含李張
的內容,但是查不出來張李
的內容。
2. _
:表示任意單個字元
匹配單個任意字元,它常用來限制表示式的字元長度。
select * from user where username like '_小_';
只能找到張小明
這樣username
為三個字且中間一個字是小
的內容。
select * from user where username like '小__';
只能找到小壞蛋
這樣username為三個字且第一個字是小
3. []
:表示括號內所列字元中的一個(類似正則表示式)。
指定一個字元、字串或範圍,要求所匹配的物件為他們中的任一個。
如[]
內有一系列字元(01234,abcde之類的)
則可略寫為0-4
,a-e
select * from user where username like '老[0-9]';
將找出“老1”、“老2”、……、“老9”
;
4. [^]
:表示不在括號所列之內的單個字元。
其取值和[]
相同,但它所要求匹配物件為指定字元以外的任一個字元。
select * from user where username LIKE'[^李王秦]飛';
將找出不是“李飛” "王飛”“秦飛“
,而是"張飛"