用于检测具有特殊字符的列的SQL查询?

时间:2018-03-11 09:11:37

标签: mysql sql wordpress

在这里以及很多其他网站上我发现了很多关于这个问题的帖子,但由于一些奇怪的原因,没有人有效。

我有一个Wordpress数据库,我需要找到wp_terms中包含的所有具有任何特殊字符的术语。

事实上,我需要找到所有包含数字或字母的内容。

为什么这不起作用? MySQL查询返回0结果。

SELECT * FROM wp_terms WHERE name LIKE '%[^0-9a-zA-Z ]%'

谢谢

2 个答案:

答案 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 模式匹配,因此您不需要在开头和结尾使用通配符。