我无法弄清楚如何在单个查询中搜索mysql数据库中的所有特殊字符。
例如。搜索mysql并返回其列包含任何特殊字符的行,例如“,”#〜;%* {等等(表示某些字段包含除0-9,a-z,A-Z之外的字符)。
我想要的样本查询类型---
SELECT * FROM mytable where column = 'PATTERN TO DETECT ALL SPECIAL CHARACTERS';
如果我想排除一些像& amp;这样的特殊表情符号,请另外提问。 ()。 - 被搜查。
答案 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 '[$&+,:;=?@#|]';