Mysql 萬用字元原理 MySQL 萬用字元學習小結

2021-10-20 01:34:13 字數 3313 閱讀 1980

mysql 萬用字元

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萬用字元 mysql萬用字元使用

mysql萬用字元使用 w3cchool sql模式匹配 匹配單個字元,匹配 匹配任意個字元,包括零個字元 sql模式下的匹配,預設是對於字母的大小寫沒有要求,並且sql模式下,或 是不能在模糊匹配中使用的,而是使用 like 或 not like.例如 select from user where...

mysql 萬用字元 選擇MySQL萬用字元

有沒有辦法用萬用字元選擇列.喜歡選擇名稱型別可能是 select type from table name 的列?解決方法 並不是的.您可以使用 column wildcard選擇所有列.如果要連線多個表,則可以通過在表 或別名前加上 來選擇特定表中的所有列 select a.id,a.title,...

sql like 萬用字元 mysql萬用字元使用

sql模式匹配 匹配單個字元,匹配 匹配任意個字元,包括零個字元 sql模式下的匹配,預設是對於字母的大小寫沒有要求,並且sql模式下,或 是不能在模糊匹配中使用的,而是使用 like 或 not like.例如 正則模式匹配 當使用正則匹配時,使用regexp和not regexp操作符 或rli...