MySQL 通过正则表达式进行搜索
- 通过正则表达式来匹配
REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现, REGEXP将会找到它,相应的行将被返回。LIKE匹配整个列。如果被匹配的文本在列值
中出现, LIKE将不会找到它,相应的行也不被返回(除非使用通配符)
# 匹配prob字段中包含0.11的字符
SELECT kw, prob FROM key_words WHERE prob REGEXP '0.11' ORDER BY prob;

发现结果中有如:0.04这类的结果,显然是.需要转义
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\.11' ORDER BY prob;

结果显示还是不对
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\\.11' ORDER BY prob;

看来需要两个\才行啊
- OR匹配-为搜索两个串之一(或者为这个串,或者为另一个串),使用|
# 选出prob 中包含0.11或者0.2的字符
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\\.11|0\\.2' ORDER BY prob;

- 匹配几个字符之一
匹配prob中.后面是1或2或3的字符
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\\.[123]';


用()也可以
匹配.后不是1或2或3的字符
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\\.[^123]';

- 匹配范围
匹配.后是1-4之间的字符
SELECT kw, prob FROM key_words WHERE prob REGEXP '0\\.[1-4
]';

-
匹配特殊字符
为了匹配特殊字符,必须用\为前导。\-表示查找-, \.表示查找.
包括.、 |、 []以及迄今为止使用过的其他特殊字符。

为了匹配反斜杠( \)字符本身,需要使用\\。 -
匹配字符类

# 匹配数字
SELECT kw, prob FROM key_words WHERE prob REGEXP '[
[:alnum:]]';

7. 匹配多个实例

8. 定位符

https://blog.youkuaiyun.com/qq_39314932/article/details/86097506

本文深入探讨MySQL中正则表达式的应用技巧,包括特殊字符的匹配、字符类的使用、定位符的理解等,通过具体案例展示如何精确查找数据库中的特定模式。
1879

被折叠的 条评论
为什么被折叠?



