MySQL中使用 正则表达式 (regexp)进行数据过滤

正则表达式的作用是匹配文本,将一个模式与一个文本串进行比较。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  |
+--------------+

好了,再往深处讲就是正则表达式的内容了。。。

猜你喜欢

转载自blog.csdn.net/weixin_45867397/article/details/105988601