mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi、grep和sed的擴充套件正規表示式模式匹配的格式
一、sql模式
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條件
s * from [user] wwww.cppcns.comhere 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 in查詢 可以這樣寫
複製** **如下:
select *
from `tb_require`
where `require_id`
in ( 23, 1024 )
這種方法一般適合數字型,如果是字串的話,就還要加上單引號。如:
複製** **如下:
select *
from `tb_require`
where `require_name`
in ( 'aaa', 'bbbb')
在查詢字串時,如果要模糊匹配,可以使用like 加 %。如:
複製** **如下:
select *
from `tb_require`
where `require_name` like '%aaa%'
那如果有個需求,是需要模糊查詢多個字串呢?like 加 in連用,如何寫?
這時候可以使用mysql的concat函式
複製** **如下:
select * from customers
where 'robert bob smith iii, phd.' like concat('%',name,'%')
這樣就解決了 like in的問題。
需要注意的是concat後面需要緊跟著括號,不要有空格,有空格的話,可能會報錯哦。
注意在你使用sql模式時,你不能使用=或!=;而使用like或not like比較操作符。
select 字段 from 表 where 某欄位 like 條件
其中關於條件,sql提供了四種匹配模式:
1,%:表示任意個或多lxyztshpn個字元。可匹配任意型別和長度的字元。
比如複製** **如下:
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 www.cppcns.com[user] where u_name like 『三__';
只找出「三腳貓」這樣name為三個字且第乙個字是「三」的;
本文標題: mysql like查詢字串示例語句
本文位址:
mysql like查詢字串示例語句
mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式 一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...
查詢字串
在乙個主串中查詢相應的子串,如 abcdwoshidef 中查詢 woshi 方法 該實現的方法是最簡單的模式匹配方法,時間複雜度較高 include iostream using namespace std int searchstring const char str1,const char s...
查詢字串
qstring startwith 判斷乙個字串是否以某個字串開頭,引數 字串,大小寫敏感 qstring str welcome to you str.startswith welcome qt casesensitive 返回true str.startswith you qt casesens...