程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 字符串形式婚配 擴大正則表達式形式婚配

MySQL 字符串形式婚配 擴大正則表達式形式婚配

編輯:MySQL綜合教程

MySQL 字符串形式婚配 擴大正則表達式形式婚配。本站提示廣大學習愛好者:(MySQL 字符串形式婚配 擴大正則表達式形式婚配)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL 字符串形式婚配 擴大正則表達式形式婚配正文


尺度的SQL形式婚配

SQL的形式婚配許可你應用“_”婚配任何單個字符,而“%”婚配隨意率性數量字符(包含零個字符)。在 MySQL中,SQL的形式缺省是疏忽年夜小寫的。上面顯示一些例子。留意在你應用SQL形式時,你不克不及應用=或!=;而應用LIKE或NOT LIKE比擬操作符。

例如,在表pet中,為了找出以“b”開首的名字:

mysql> SELECT * FROM pet WHERE name LIKE "b%";

+--------+--------+---------+------+------------+------------+

| name   | owner | species | sex | 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 | sex | 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 | sex | 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 | sex | birth      | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL |

| Buffy | Harold | dog     | f    | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

MySQL供給尺度的SQL形式婚配,和一種基於象Unix適用法式如vi、grep和sed的擴大正則表達式形式婚配的格局。

擴大正則表達式形式婚配

由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 | sex | 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___FCKpd___5quot;;

+--------+--------+---------+------+------------+-------+

| name   | owner | species | sex | 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 | sex | 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 "^.....___FCKpd___7quot;;

+-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth      | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL |

| Buffy | Harold | dog     | f    | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

你也能夠應用“{n}”“反復n次”操作符重寫先前的查詢:

mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}___FCKpd___8quot;;

+-------+--------+---------+------+------------+-------+

| name | owner | species | sex | birth      | death |

+-------+--------+---------+------+------------+-------+

| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL |

| Buffy | Harold | dog     | f    | 1989-05-13 | NULL |

+-------+--------+---------+------+------------+-------+

總結

本引見了有關字符串形式婚配的有關常識。尺度的SQL形式婚配是SQL說話的尺度,可以被其它關系數據庫體系接收。擴大正軌表達式形式婚配

是依據Unix體系的尺度開辟了,普通只可以使用在MySQL上,然則其功效要比尺度的SQL形式婚配更強。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved