如何使用LIKE运算符仅筛选含特定特殊字符的字段?
匹配包含'BRA_'的字段的SQL解决方案
问题根源:SQL的
LIKE运算符中,_是匹配单个任意字符的通配符,直接写LIKE '%BRA_%'会把包含BRA后接任意单个字符的内容(比如BRAzil、BRAma)也匹配进来,而非仅匹配带BRA_的目标内容。解决方案1:转义下划线
不同数据库的转义方式略有区别,核心是把下划线从通配符转为普通字符:- MySQL/MariaDB:用反斜杠转义
SELECT * FROM your_table WHERE your_column LIKE '%BRA\_%'; - SQL Server:用方括号包裹下划线
SELECT * FROM your_table WHERE your_column LIKE '%BRA[_]%'; - Oracle:通过
ESCAPE子句指定转义字符SELECT * FROM your_table WHERE your_column LIKE '%BRA\_%' ESCAPE '\';
- MySQL/MariaDB:用反斜杠转义
解决方案2:使用字符串定位函数
直接判断字段中是否存在BRA_这个精确子串,绕开LIKE的通配符规则:- SQL Server:使用
CHARINDEXSELECT * FROM your_table WHERE CHARINDEX('BRA_', your_column) > 0; - MySQL/Oracle:使用
INSTRSELECT * FROM your_table WHERE INSTR(your_column, 'BRA_') > 0;
- SQL Server:使用
内容的提问来源于stack exchange,提问作者jo1718
相关产品推荐
相关产品推荐

