一、sql的模式匹配允許你使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零個字元)。在mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你使用sql模式時,你不能使用=或!=;而使用like或not like比較操作符。
select 字段 from 表 where 某欄位 like 條件
其中關於條件,sql提供了四種匹配模式:
1,%:表示任意個或多個字元。可匹配任意型別和長度的字元。
比如 select * from [user] where u_name like 『%三%』
將會把u_name為「張三」,「張貓三」、「三腳貓」,「唐三藏」等等有「三」的記錄全找出來。
另外,如果需要找出u_name中既有「三」又有「貓」的記錄,請使用and條件
select * from [user] where u_name like 『%三%』 and u_name like 『%貓%』
若使用 select * from [user] where u_name like 『%三%貓%』
雖然能搜尋出「三腳貓」,但不能搜尋出符合條件的「張貓三」。
2,_:表示任意單個字元。匹配單個任意字元,它常用來限制表示式的字元長度語句:(可以代表乙個中文字元)
比如 select * from [user] where u_name like 『_三_』
只找出「唐三藏」這樣u_name為三個字且中間乙個字是「三」的;
再比如 select * from [user] where u_name like 『三__』;
只找出「三腳貓」這樣name為三個字且第乙個字是「三」的;
二、正則模式
由mysql提供的模式匹配的其他型別是使用擴充套件正規表示式。當你對這類模式進行匹配測試時,使用regexp和not regexp操作符(或rlike和not rlike,它們是同義詞)。
擴充套件正規表示式的一些字元是:
「.」匹配任何單個的字元。(單位元組字元)
乙個字元類「[...]」匹配在方括號內的任何字元。例如,「[abc]」匹配「a」、「b」或「c」。為了命名字元的乙個範圍,使用乙個「-」。「[a-z]」匹配任何小寫字母,而「[0-9]」匹配任何數字。
「 * 」匹配零個或多個在它前面的東西。例如,「x*」匹配任何數量的「x」字元,「[0-9]*」匹配的任何數量的數字,而「.*」匹配任何數量的任何東西。
正規表示式是區分大小寫的,但是如果你希望,你能使用乙個字元類匹配兩種寫法。例如,「[aa]」匹配小寫或大寫的「a」而「[a-za-z]」匹配兩種寫法的任何字母。
如果它出現在被測試值的任何地方,模式就匹配(只要他們匹配整個值,sql模式匹配)。
為了定位乙個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用「^」或在模式的結尾用「$」。
為了說明擴充套件正規表示式如何工作,上面所示的like查詢在下面使用regexp重寫:
為了找出以「三」開頭的名字,使用「^」匹配名字的開始。
from [user] where u_name regexp 『^三』;
將會把u_name為 「三腳貓」等等以「三」開頭的記錄全找出來。
為了找出以「三」結尾的名字,使用「$」匹配名字的結尾。
from [user] where u_name regexp 『三$』;
將會把u_name為「張三」,「張貓三」等等以「三」結尾的記錄全找出來。
你也可以使用「」「重複n次」操作符重寫先前的查詢:
from [user] where u_name regexp 『b$』;
注意:如果是中文字元,可能在使用時需要注意一下。
來自 <>
mysql模糊查詢 MYSQL模糊查詢
mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...
mysql模糊查詢索引 MySQL模糊查詢全文索引
全文索引 mysql front dump 2.5 host localhost database test server version 4.0.12 nt log table structure for table t3 create table t3 name char 12 not null...
mysql 正反模糊查詢 mysql模糊查詢
mysql 使用內建函式進行模糊查詢 locate,position,instr,find in set 1 locate substr str,pos 方法 2 position substr in field 方法 3 instr str substr 方法 4 find in set str1...