我正在构建一个测试来突出显示带有非法字符的数据,其中非法字符是用户定义的。
所以我有类似的东西
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, ']')
但是,您需要小心正则表达式中的特殊字符,例如和
-
。