爲在搜索子句中使用通配符,必須使用 LIKE 操做符。 LIKE 指示MySQL,後跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。正則表達式
select column_name1 from table_name where column_name2 like 'jet%'; 檢索以jet開頭的數據,默認不區分大小寫。
只匹配一個字符,不能多也不能少,不能像%通配符同樣匹配0個或多個。code
select column_name from table_name where column_name REGEXP '1000';
檢索column_name字段中含有字符1000的數據。好比:jef1000sad;regexp
若是使用LIKE,那麼它將不會匹配jef1000sad中的1000,由於LIKE是全詞匹配。blog
select column_name from table_name where column_name REGEXP '.000';
檢索含有'000'前面有一個字符的數據。好比:table
ssfdd1000 dsafd2000
這兩個均可以。select
select column_name from table_name where column_name REGEXP '100|101';
把要匹配的內容用單引號括起來,此語句匹配字段中含有100或者101的值。是含有,而不是全詞匹配。搜索
使用中括號:im
select column_name from table_name where column_name REGEXP '[35] tom';
此語句匹配含有‘3 tom’或者‘5 tom’的字段值。注意不是全詞匹配,含有就行。數據
此外還能夠進行範圍匹配:db
若是咱們要查找字段值中含有‘.’的值,假如咱們使用:
... REGEXP '.';
那麼咱們將匹配中全部字段,由於在正則表達式中點號表示匹配任意一個字符。因此咱們須要轉義:
select column_name from table_name where column_name REGEXP '\\.';
特殊字符匹配:
舉個例子,匹配含有空格的字段值,不只可使用:
... REGEXP ' ';
還能夠根據上表中的[:blank:]:
select name from tb2 where name regexp '[[:blank:]]';
記住外面還須要套上箇中括號才行。
舉兩個例子:
字符's'後面跟的問號表示匹配0個或1個,因此能夠匹配到含有'stick'或者'sticks'.
下一個例子:
第一個正則表達式匹配任意出現的數字,而{4}又規定了出現4次,因此這個語句檢索連續出現4個數字的字段值。
咱們上面用的正則表達式都是在字段值中的任意位置進行匹配,但假如咱們要檢索開頭的某些字符的字段值呢?
開頭:^
select name from tb2 where name regexp '^[1-5]';
檢索開頭是以1或2或3或4或5的字段值。
結尾:$
select name from tb2 where name regexp '[mo]$';
檢索以字符m或者o結尾的字段值。
^ 符號還有一個用途:
在中括號中間表示檢索不在這個集合中間的值:
select name from tb2 where name regexp '[^1-3 tom]';
此語句是檢索除了'1 tom','2 tom','3 tom'之外的字段值。能夠看作全詞否認。