我正在尝试从表中选择所有行,其中列包含列表中的元素:类似的东西
Select * from `table` where `column` (contains anything from {£,$,%,^,&,...,/})
这基本上是一个非法的字符检查。
有人能帮忙吗?
感谢
对于MySQL,您可以使用REGEXP
或RLIKE
来检查特定列的模式匹配。在您的情况下,以下示例可能有效:
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,"''"是必需的。