5

我正在尝试从表中选择所有行,其中列包含列表中的元素:类似于

Select * from `table` where `column` (contains anything from {£,$,%,^,&,...,/})

这基本上是一个非法的字符检查。

任何人都可以帮忙吗?

谢谢

4

4 回答 4

10

对于 MySQL,您可以使用REGEXPRLIKE检查特定列的模式匹配。在您的情况下,以下示例可能有效:

SELECT * FROM `table` WHERE `column` REGEXP '[\£\$\%\^\&]';
于 2013-04-16T09:25:17.623 回答
0

您可以LIKE用于模式匹配,

SELECT  *
FROM    `table`
WHERE   `column` LIKE '%£%' OR
        `column` LIKE '%$%' OR
        `column` LIKE '%\%%' OR
        `column` LIKE '%&%'
于 2013-04-16T09:24:59.427 回答
0

如果我理解正确,您想要所有具有非字母数字字符的行,即除数字和字母之外

SELECT * FROM `table` WHERE `column` REGEXP '^[^a-zA-Z0-9]+$'

内部字符类意味着否定,而^[ ]正则表达式开头的外部指定列值的开始。$实现字符串值的结尾

于 2013-04-16T09:31:06.323 回答
0
SELECT * FROM table WHERE column LIKE '%\%%' OR column LIKE '%$%' OR column LIKE '%&%';

...ETC。'%char%' 表示某处有 char,'%char' 表示 char 在字符串的末尾,'char%' 表示它在开头。'%\%%' 表示搜索到的字符(%)是 mysql 使用的特殊字符,'\' 是必须的。

于 2013-04-16T09:39:59.907 回答