MYSQL模式匹配

2021-08-27 21:02:59 字數 1880 閱讀 8601

mysql提供標準的sql模式匹配,以及一種基於類unix裡的程式如vigrepsed裡的擴充套件正規表示式模式匹配的格式。 sql模式匹配允許你使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零字元)。在 mysql中,sql的模式預設是忽略大小寫的。下面給出一些例子。注意使用sql模式時,不能使用=!=;而應使用likenot like比較操作符。 要想找出以「b」開頭的名字的動物資訊:

mysql> select * from pet where name like 'b%';
要想找出以「fy」結尾的名字:

mysql> select * from pet where name like '%fy';
要想找出包含「w」的名字:

mysql> select * from pet where name like '%w%';
要想找出正好包含5個字元的名字,使用「_」模式字元:

mysql> select * from pet where name like '_____';
由mysql提供的模式匹配的其它型別是使用擴充套件正規表示式。當你對這類模式進行匹配測試時,使用regexpnot regexp操作符(或rlikenot rlike,它們是同義詞)。

擴充套件正規表示式的一些字元是:

如果regexp模式與被測試值的任何地方匹配,模式就匹配(這不同於like模式匹配,只有與整個值匹配,模式才匹配)。 為了定位乙個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用「^」或在模式的結尾用「$」。 為了說明擴充套件正規表示式如何工作,下面使用regexp重寫上面所示的like查詢:

為了找出以「b」開頭的名字,使用「^」匹配名字的開始:

mysql> select * from pet where name regexp '^b';
如果你想強制使regexp比較區分大小寫,使用binary關鍵字使其中乙個字串變為二進位制字串。該查詢只匹配名稱首字母的小寫『b』。

mysql> select * from pet where name regexp binary '^b';
為了找出以「fy」結尾的名字,使用「$」匹配名字的結尾:

mysql> select * from pet where name regexp 'fy$';
為了找出包含乙個「w」的名字,使用以下查詢:

mysql> select * from pet where name regexp 'w';
既然如果乙個正規表示式出現在值的任何地方,他就會被模式匹配,就不必在先前的查詢中在模式的兩側放置乙個萬用字元以使得它匹配整個值,就像你使用了乙個sql模式那樣。

為了找出包含正好5個字元的名字,使用「^」和「$」匹配名字的開始和結尾,和5個「.」例項在兩者之間:

mysql> select * from pet where name regexp '^.....$';
你也可以使用「」重複n次操作符,重寫前面的查詢:

mysql> select * from pet where name regexp '^.$';

mysql匹配 MySQL匹配全文

我試圖用mysql進行全文搜尋,以匹配字串.問題在於它首先返回了奇怪的結果.例如,字串 passat 2.0 tdi and match records veiculos.titulo,records veiculos.descricao against passat 2.0 tdi with qu...

mysql 匹配 mysql模糊匹配

1,表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號 表示。比如 select from user where u name like 三 將會把u name為 張三 張貓三 三腳貓 唐三藏 等等有 三 的記錄全找出來。另外,如果需要找出u name中既有 三...

shell之匹配模式和擴充套件匹配模式

首先說一下什麼是匹配模式,然後再介紹擴充套件匹配模式。匹配模式這個概念就算不知道,但是也都會使用這個功能找到匹配的檔案。例如 ls ab 找到所有以ab開頭的檔案。這就是利用了 可以匹配任意字串,包括空串。匹配模式是man bash中的pattern matching,星號的含義在上面講了。用來匹配...