MySQL Regex搜尋,mysqlRegex

來源:互聯網
上載者:User

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.*';
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.