MySQL:从列表中选择列包含元素的行


MySQL: Select row where column contains element from list

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

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

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

有人能帮忙吗?

感谢

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

SELECT * FROM `table` WHERE `column` REGEXP '['£'$'%'^'&]';

您可以使用LIKE进行模式匹配,

SELECT  *
FROM    `table`
WHERE   `column` LIKE '%£%' OR
        `column` LIKE '%$%' OR
        `column` LIKE '%'%%' OR
        `column` LIKE '%&%'

如果我理解正确,您希望所有行都包含非字母数字字符,即数字和字母以外的

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

[ ]字符类内部的^表示否定,而正则表达式开头的外部表示列值的开头。$实现字符串值的结束

SELECT * FROM table WHERE column LIKE '%'%%' OR column LIKE '%$%' OR column LIKE '%&%';

"%char%"表示某个地方有char,"%char"表示char在字符串的末尾,"char%"表示它在开头。"%''%%"意味着searched char(%(是mysql使用的一个特殊的char,"''"是必需的。