php mysql搜索所有特殊字符

时间:2013-09-14 07:38:43

标签: mysql

我无法弄清楚如何在单个查询中搜索mysql数据库中的所有特殊字符。

例如。搜索mysql并返回其列包含任何特殊字符的行,例如“,”#〜;%* {等等(表示某些字段包含除0-9,a-z,A-Z之外的字符)。

我想要的样本查询类型---

SELECT * FROM mytable where column = 'PATTERN TO DETECT ALL SPECIAL CHARACTERS';

如果我想排除一些像& amp;这样的特殊表情符号,请另外提问。 ()。 - 被搜查。

5 个答案:

答案 0 :(得分:3)

您的查询会这样,请检查正则表达式

SELECT * 
FROM mytable 
WHERE column regexp '[^a-zA-Z0-9]'

第二个查询类似

SELECT * 
FROM mytable 
WHERE column regexp '[^a-zA-Z0-9\&]'

\ +要忽略的字符

答案 1 :(得分:0)

类似的东西:

SELECT * FROM mytable where NOT(column REGEXP '^([:alnum:]|[:blank:])*$');

'|'是一个OR,'[:alnum:]'匹配任何字母数字,[:blank:]匹配空格(您可能想要或不想要),^匹配开头,$匹配结束。所以它返回column不是由字母数字或从开始到结束的空格组成的地方。或者,您可以在单个[]子句中列出所有不允许的字符并匹配它们。

如果某些特殊字符可以,您可以添加其他字符:

SELECT * FROM mytable where NOT(column REGEXP '^([:alnum:]|[:blank:]|[()&])*$');

有关详情,请参阅文档:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

(我不能从这里测试SQL,但我认为我的语法正确)。

答案 2 :(得分:0)

这是最简单的方法:

SELECT *
FROM mytable
WHERE column REGEXP '[^a-zA-Z0-9]'

答案 3 :(得分:0)

尝试使用此查询搜索特殊字符记录。

SELECT *
FROM tableName
WHERE fieldName REGEXP '[^a-zA-Z0-9@:. \'\-`,\&]'

我们删除了符号@:dot(。)撇号(')连字符( - )asterick(`)和逗号(,)字母和数字,以便我们可以看到剩余的特殊字符记录。

答案 4 :(得分:-1)

SELECT *
  FROM table
 WHERE column1 REGEXP '[$&+,:;=?@#|]';

更多信息:http://dev.mysql.com/doc/refman/5.0/en/regexp.html