我想使用mysql选择所有记录 ONLY
这些词语:
4ahhyes4,4ahh4,4ahaa4,空格和圆点。
这是我的查询。
SELECT * FROM p_posts WHERE post_content REGEXP '^(4ahhyes4|4ahh4|4ahaa4|\.|\s)+$';
但它匹配所有记录与其他字符(就像LIKE语法):
abcde 4ahhyes4 4ahhyes4 4ahhyes4 ~> failed because abcde
123sdasd 4ahhyes4 ..... ~> failed because 123sdasd
4ahhyes4 4ahhyes4.... ..... ~> OK
如何只匹配包含这些单词的记录?
答案 0 :(得分:4)
正如REGEXP
运算符的定义所述:
注意强>
因为MySQL在字符串中使用C转义语法(例如,“\n
”来表示换行符),所以必须加倍“\
“您在REGEXP
字符串中使用的内容。
String Literals上的文档说明:
MySQL识别Table 9.1, “Special Character Escape Sequences”中显示的转义序列。对于所有其他转义序列,将忽略反斜杠。也就是说,转义字符被解释为好像它没有被转义。例如,“
\x
”只是“x
”。
因此,您当前匹配的模式为^(4ahhyes4|4ahh4|4ahaa4|.|s)+$
。你应该这样做:
SELECT *
FROM p_posts
WHERE post_content REGEXP '^(4ahhyes4|4ahh4|4ahaa4|\\.|\\s)+$'
答案 1 :(得分:-1)
WHERE post_content IN ( '4ahhyes4', '4ahh4', '4ahaa4', 'white space and dot' )
不是吗?