3

我不知道如何在单个查询中搜索 mysql 数据库中的所有特殊字符。

例如。搜索 mysql 并返回其列包含任何特殊字符的行,如 ",'#~;%*{ 等(表示如果某些字段包含除 0-9、az、AZ 之外的字符)。

我想要的示例查询类型---

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

如果我想排除一些特殊字符,例如 & ( ) ,还请帮助解决另一个问题。- 被搜查。

4

5 回答 5

3

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

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

第二个查询将是相似的

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

\ + 要忽略的字符

于 2013-09-14T07:49:17.327 回答
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,但我认为我的语法是正确的)。

于 2013-09-14T07:50:39.377 回答
0

这是最简单的方法:

SELECT *
FROM mytable
WHERE column REGEXP '[^a-zA-Z0-9]'
于 2013-09-14T07:56:59.390 回答
0

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

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

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

于 2016-09-12T09:17:59.143 回答
-1
SELECT *
  FROM table
 WHERE column1 REGEXP '[$&+,:;=?@#|]';

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

于 2013-09-14T07:51:02.133 回答