mysql模糊匹配查詢

2022-10-15 18:48:08 字數 3433 閱讀 2155

mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi、grep和sed的擴充套件正規表示式

模式匹配的格式。

sql的模式匹配允許你使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零個字元)。

在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你使用sql模式時,你不

能使用=或!=;而使用like或not like比較操作符。

為了找出以「b」開頭的名字:

mysql> select * from pet where name like "b%";

| name | owner | species | *** | birth | death |

| buffy | harold | dog | f | 1989-05-13 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

為了找出以「fy」結尾的名字:

mysql> select * from pet where name like "%fy";

| name | owner | species | *** | birth | death |

| fluffy | harold | cat | f | 1993-02-04 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

為了找出包含乙個「w」的名字:

mysql> select * from pet where name like "%w%";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

| whistler | gwen | bird | null | 1997-12-09 | null |

為了找出包含正好5個字元的名字,使用「_」模式字元:

mysql> select * from pet where name like "_____";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

由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重寫:

為了找出以「b」開頭的名字,使用「^」匹配名字的開始並且「[bb]」匹配小寫或大寫的「b」:

mysql> select * from pet where name regexp "^[bb]";

| name | owner | species | *** | birth | death |

| buffy | harold | dog | f | 1989-05-13 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

為了找出以「fy」結尾的名字,使用「$」匹配名字的結尾:

mysql> select * from pet where name regexp "fy$";

| name | owner | species | *** | birth | death |

| fluffy | harold | cat | f | 1993-02-04 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

為了找出包含乙個「w」的名字,使用「[ww]」匹配小寫或大寫的「w」:

mysql> select * from pet where name regexp "[ww]";

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| bowser | diane | dog | m | 1989-08-31 | 1995-07-29 |

| whistler | gwen | bird | null | 1997-12-09 | null |

既然如果乙個正規表示式出現在值的任何地方,其模式匹配了,就不必再先前的查詢中在模式的兩

方面放置乙個萬用字元以使得它匹配整個值,就像如果你使用了乙個sql模式那樣。

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

兩者之間:

mysql> select * from pet where name regexp

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

你也可以使用「」「重複n次」操作符重寫先前的查詢:

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

| name | owner | species | *** | birth | death |

| claws | gwen | cat | m | 1994-03-17 | null |

| buffy | harold | dog | f | 1989-05-13 | null |

mysql常識總結

環境 vs2005,mysql5 安裝mysql時要選擇全部安裝而不是典型安裝,典型安裝不會安裝developer components,而寫c 連線資料庫的程式中需要包含lib庫和include標頭檔案就是在developer components中。程式程式中要包含mysql.h這個標頭檔案以及...

安裝mysql步驟

本教程介紹mysql5.0如何安裝和配置。工具 原料 mysql安裝程式 步驟 方法 1.1 開啟 的安裝檔案,出現如下介面 2.2 mysql安裝嚮導啟動,點選 next 繼續。3.3 選擇安裝型別,有 typical 預設 complete 完全 custom 使用者自定義 三個選項,我們選擇 ...

mysql常用指令

1.匯出整個資料庫 mysqldump u 使用者名稱 p default character set latin1 資料庫名 匯出的檔名 資料庫預設編碼是latin1 mysqldump u wcnc p smgp apps wcnc 2.匯出乙個表 mysqldump u 使用者名稱 p 資料庫...