正規表達式
mysql僅支援多數正規表達式實作的一個很小的子集
基本字元比對
查詢pro_name包含文本1000的所有行
SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CO1gjM2UGN3kzY2IWY2gzYyYzX2QDNzEDM5AzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
查詢prod_name中任意包含000的所有行
. 是正規表達式中的一個特殊字元
SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;
進行OR比對
| 表示或的關系
查詢prod_name包含1000或者2000的所有行
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
比對幾個字元之一
[] 表示比對特定的字元,它表示一組字元,比對任意一個。比如[123],是[1|2|3]的縮寫
查詢prod_name包含1 Ton或者2 Ton或者3 Ton的所有行
SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton';
比對範圍
集合可用來定義要比對的一個或者多個字元,如比對數字0到9,可寫作[0-9]
查詢prod_name包含1 Ton到5 Ton的所有行
SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;
比對特殊字元
需要使用\轉義
查詢vend_name中包含 . 的字元的所有行
SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;
比對多個執行個體
重複元字元
元字元 | 說明 |
* | 0個或多個比對 |
+ | 1個或者多個比對(等于{1, } ) |
? | 0個或1個比對(等于{0, 1}) |
{ n } | 指定數目的比對 |
{ n, } | 不少于指定數目的比對 |
{n, m} | 比對數目的範圍(m不超過255) |
查詢出prod_name中包含1 stick和5 sticks的所有行
\( \) 比對(),[0-9]比對任意數字,sticks?比對stick和sticks,s?表示s可選,出現0次或出現1次
SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name;
定位符
定位元字元
元字元 | 說明 |
^ | 文本的開始 |
$ | 文本的結尾 |
查詢以一個數(包括小數點開始的數)的所有産品
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;