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