我不知道如何在单个查询中搜索 mysql 数据库中的所有特殊字符。
例如。搜索 mysql 并返回其列包含任何特殊字符的行,如 ",'#~;%*{ 等(表示如果某些字段包含除 0-9、az、AZ 之外的字符)。
我想要的示例查询类型---
SELECT * FROM mytable where column = 'PATTERN TO DETECT ALL SPECIAL CHARACTERS';
如果我想排除一些特殊字符,例如 & ( ) ,还请帮助解决另一个问题。- 被搜查。
我不知道如何在单个查询中搜索 mysql 数据库中的所有特殊字符。
例如。搜索 mysql 并返回其列包含任何特殊字符的行,如 ",'#~;%*{ 等(表示如果某些字段包含除 0-9、az、AZ 之外的字符)。
我想要的示例查询类型---
SELECT * FROM mytable where column = 'PATTERN TO DETECT ALL SPECIAL CHARACTERS';
如果我想排除一些特殊字符,例如 & ( ) ,还请帮助解决另一个问题。- 被搜查。
您的查询会这样,请检查正则表达式
SELECT *
FROM mytable
WHERE column regexp '[^a-zA-Z0-9]'
第二个查询将是相似的
SELECT *
FROM mytable
WHERE column regexp '[^a-zA-Z0-9\&]'
\ + 要忽略的字符
就像是:
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,但我认为我的语法是正确的)。
这是最简单的方法:
SELECT *
FROM mytable
WHERE column REGEXP '[^a-zA-Z0-9]'
尝试使用此查询来搜索特殊字符记录。
SELECT *
FROM tableName
WHERE fieldName REGEXP '[^a-zA-Z0-9@:. \'\-`,\&]'
我们删除了符号@ : 点(.) 撇号(') 连字符(-) 星号(`) 和逗号(,) 字母和数字,以便我们可以看到剩余的特殊字符记录。
SELECT *
FROM table
WHERE column1 REGEXP '[$&+,:;=?@#|]';