目标是选择包含某个特定单词的所有行,可以在字符串的开头或结尾和/或被空格包围,可以这么说,不应该在其他单词内。
这是我的数据库中的几行:
+---+--------------------+
| 1 | string with test |
+---+--------------------+
| 2 | test string |
+---+--------------------+
| 3 | testing stringtest |
+---+--------------------+
| 4 | not-a-test |
+---+--------------------+
| 5 | test |
+---+--------------------+
所以在这个例子中,选择 wordtest
应该返回第 1、2 和 5 行。
问题是由于某种原因,SELECT * FROM ... WHERE ... RLIKE '(\s|^)test(\s|$)';
返回 0 行。
我在哪里错了,也许,如何才能做得更好?
编辑: Query 还应该选择只有一个 word 的行test
。
我的第一个问题的答案是:
我没有转义特殊字符,所以\s
应该是\\s
.
工作查询:SELECT * FROM ... WHERE ... RLIKE '(\\s|^)test(\\s|$)';
。(或者只是一个空格( |^)
/ ( |$)
,也可以)