SQL Server中Like匹配含方括号与连字符的内容失效问题
解决LIKE匹配含方括号字符串的问题
嘿,我来帮你搞定这个LIKE匹配的坑!你遇到的问题核心在于方括号[]是LIKE语法里的特殊通配符——它的作用是匹配括号内的任意单个字符,所以你直接写[C0-S12]ECT-PM18052时,数据库会把[C0-S12]解析成“匹配C、0到S之间的任意字符、1、2里的单个字符”,这就导致它会匹配一大堆不符合预期的结果,比如[C0-S8]ECT-PM18052这类。而你用//转义没效果,是因为几乎没有数据库把双斜杠当作LIKE的转义符,数据库会把它当成普通字符去匹配,自然找不到对应记录。
下面分常见数据库给你精准匹配的方案:
SQL Server:用双重方括号
[[]]来转义单个方括号,把你的查询改成这样:SELECT * FROM your_table WHERE your_column LIKE '[[]C0-S12[]]ECT-PM18052'这里
[[]]会被解析成字面的[],剩下的部分保持原样,就能精准命中目标字符串。MySQL/MariaDB:默认用反斜杠
\作为转义符,转义后的查询语句:SELECT * FROM your_table WHERE your_column LIKE '\[C0-S12\]ECT-PM18052'要是你的SQL模式禁用了反斜杠转义,还可以用
ESCAPE指定自定义转义符(比如#):SELECT * FROM your_table WHERE your_column LIKE '#[C0-S12#]ECT-PM18052' ESCAPE '#'PostgreSQL:需要搭配
ESCAPE关键字指定转义符,比如用反斜杠:SELECT * FROM your_table WHERE your_column LIKE '\[C0-S12\]ECT-PM18052' ESCAPE '\'
最后提个醒:如果你的目标字符串里还有%、_这类通配符,也要按相同规则转义,避免再次出现匹配错误哦。
内容的提问来源于stack exchange,提问作者Simsons
相关产品推荐
相关产品推荐

