在这里以及很多其他网站上我发现了很多关于这个问题的帖子,但由于一些奇怪的原因,没有人有效。
我有一个Wordpress数据库,我需要找到wp_terms中包含的所有具有任何特殊字符的术语。
事实上,我需要找到所有包含数字或字母的内容。
为什么这不起作用? MySQL查询返回0结果。
SELECT * FROM wp_terms WHERE name LIKE '%[^0-9a-zA-Z ]%'
谢谢
答案 0 :(得分:1)
您可以使用 REGEXP 查找此信息。 ^也必须在[]之外。
SELECT * FROM wp_terms WHERE name REGEXP '[^0-9a-zA-Z ]'
<强>测试强>
MariaDB [(none)]> SELECT "Hello" REGEXP '[^0-9a-zA-Z ]' as resut;
+-------+
| resut |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> SELECT "-Hello" REGEXP '[^0-9a-zA-Z ]' as resut;
+-------+
| resut |
+-------+
| 0 |
+-------+
1 row in set (0.00 sec)
答案 1 :(得分:0)
它不起作用,因为MySQL支持ANSI LIKE
版本。您使用的表单是与SQL Server关联的扩展表单。
另一方面,MySQL支持更强大的正则表达式。你想要的正则表达式是:
WHERE name REGEXP '[^0-9a-zA-Z ]'
请注意,正则表达式与字符串中的 where 模式匹配,因此您不需要在开头和结尾使用通配符。