MySQL Regex搜尋,mysqlRegex
products表如下:
1. 基底字元匹配
使用Regex與LIKE的區別,Regex是在整個列搜尋,只要prod_name中包含了所搜尋的字元就可以了,而LIKE如果不用萬用字元,那麼要求prod_name與搜尋的字元要完全符合:也就是說下面的例子,需要使用 LIKE 'JetPack 1000'才可以適配搜尋到。
2 使用or進行匹配搜尋,可以搜尋兩個條件,也可以串連多個條件:
3 匹配幾個字元之一://這個的意思是說,匹配1 Ton 或者 2 Ton 或者 3 Ton
但是如果寫成下面這樣又是不對的://這個得意思是匹配1 或者 2 或者 3 Ton的列
4 範圍匹配,[1-5] 其實是 [12345]的簡寫,此外 [0-9],[3-9]都是合法的。
5 匹配特殊字元,匹配特殊字元需要使用\\
6 匹配多個執行個體
重複元素字元:
| 元字元 |
說明 |
| * |
0個或多個匹配 |
| + |
1個或多個匹配 |
| ? |
0個或1個匹配 |
| {n} |
指定數目的匹配 |
| {n,} |
不少於指定數目的匹配 |
| {n,m} |
匹配數目的範圍 |
下面搜尋條件的意思是 首先要有一個右括弧,接著應該有一個數字,然後是一個空格,再然後是sticks,最後是0個或1個左括弧,問號的意思如上表所示
7 字元種類 為了方便工作,可以使用預先定義的字元集,字元集如下:
| 類 |
說明 |
| [:alpha:] |
任一字元 |
| [:blank:] |
空格和定位字元 |
| [:cntrl:] |
ASCII控制字元(從ASCII0到31和127) |
| [:digit:] |
任一數字同 [0-9] |
| [:graph:] |
任意可列印字元,但不包括空格 |
| [:lower:] |
任意小寫字母 |
| [:print:] |
任意可列印字元 |
| [:punct:] |
即不在[:alnum:]又不在[:cntrl:]中的任一字元 |
| [:space:] |
包括空格在內的任意空白字元 |
| [:upper:] |
任意大寫字母 |
| [:alnum:] |
任意字母和數字 |
接下來從表中搜尋prod_name中 有連續4個數位名字:其中[:digit:]表示任意的數字,{4}表示這個數字需要出現4次:
8 定位器在特定的位置搜尋
| 元字元 |
說明 |
| ^ |
文本開始 |
| $ |
文本的結尾 |
| [[:<:]] |
詞的開始 |
| [[:>:]] |
詞的結尾 |
下面的語句時尋找以數字或者 . 開頭的prod_name
MySql正則問題
下面是一些資料 你看看
Regex:
Regex是為複雜搜尋指定模式的強大方式。
^
所匹配的字串以後面的字串開頭
mysql> select "fonfo" REGEXP "^fo$"; -> 0(表示不匹配)
mysql> select "fofo" REGEXP "^fo"; -> 1(表示匹配)
$
所匹配的字串以前面的字串結尾
mysql> select "fono" REGEXP "^fono$"; -> 1(表示匹配)
mysql> select "fono" REGEXP "^fo$"; -> 0(表示不匹配)
.
匹配任何字元(包括新行)
mysql> select "fofo" REGEXP "^f.*"; -> 1(表示匹配)
mysql> select "fonfo" REGEXP "^f.*"; -> 1(表示匹配)
a*
匹配任意多個a(包括空串)
mysql> select "Ban" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba*n"; -> 1(表示匹配)
a+
匹配1個或多個a字元的任何序列。mysql> select "Ban" REGEXP "^Ba+n"; -> 1(表示匹配)
mysql> select "Bn" REGEXP "^Ba+n"; -> 0(表示不匹配)a?
匹配一個或零個a
mysql> select "Bn" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Ban" REGEXP "^Ba?n"; -> 1(表示匹配)
mysql> select "Baan" REGEXP "^Ba?n"; -> 0(表示不匹配)de|abc
匹配de或abc
mysql> select "pi" REGEXP "pi|apa"; -> 1(表示匹配)
mysql> select "axe" REGEXP "pi|apa"; -> 0(表示不匹配)
mysql> select "apa" REGEXP "pi|apa"; -> 1(表示匹配)
mysql> select "apa" REGEXP "^(pi|apa)$";......餘下全文>>
一個mysql的Regex
select * from tableA where style like "111%";
看你這個是以 111 開頭的 所以可以這樣寫
正則的話,是這樣
SELECT * FROM tableA WHERE style REGEXP '^111.*';