LIKE函数用于用户定义的字符



我正在构建一个测试来突出显示带有非法字符的数据,其中非法字符是用户定义的。

所以我有类似的东西

SELECT col
FROM db
WHERE col LIKE '%[^<legal chars>]%'

通常,当<legal chars>包含特殊字符时,我可以使用ESCAPE

然而,这里legal chars可以是任何(例如,a-zA-Z0-9和/或^[*(,所以无论我选择什么特殊的字符,它都可能在legal chars中。

有人知道我应该如何处理这个问题吗?

如果要使用正则表达式,请不要使用like。使用regexp:

where col regexp $whatever

我建议您在客户端构建正则表达式。但你可以在MySQL中这样做:

where col regexp concat('[', $whatever, ']')

但是,您需要小心正则表达式中的特殊字符,例如-

最新更新