正则表达式的作用是匹配文本,将一个模式与一个文本串进行比较。MySQL中的where子句对正则表达式提供支持,需要关键字regexp(regular expression)配合使用。
eg:
mysql> SELECT `note_id`
-> FROM productnotes
-> WHERE note_id REGEXP '11.';
+---------+
| note_id |
+---------+
| 110 |
| 111 |
| 112 |
| 113 |
| 114 |
+---------+
mysql> SELECT `prod_name`
-> FROM products
-> WHERE prod_name REGEXP '1000';
+--------------+
| prod_name |
+--------------+
| JetPack 1000 |
+--------------+
LIKE与REGEXP的区别:
LIKE匹配整个列, REGEXP在列值内进行匹配。
进行or匹配
mysql> SELECT prod_name
-> FROM products
-> WHERE prod_name REGEXP 'anvil|seed';
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
| Bird seed |
+--------------+
匹配几个字符
mysql> SELECT prod_name
-> FROM products
-> WHERE prod_name REGEXP BINARY '[123] ton';
+-------------+
| prod_name |
+-------------+
| 1 ton anvil |
| 2 ton anvil |
+-------------+
[123] ton是[1|2|3] ton的缩写;
binary:区分大小写;
匹配范围:
mysql> SELECT prod_name
-> FROM products
-> WHERE prod_name REGEXP '[1-5] ton'
-> ORDER BY prod_name;
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+--------------+
好了,再往深处讲就是正则表达式的内容了。。。