Oracle SQL Developer中LIKE匹配含'+'字符数据无结果问题求助
解决Oracle SQL中LIKE查询'+'字符无结果的问题
问题原因
在Oracle的LIKE语法中,+是通配符,作用是匹配任意单个字符,而非字面意义上的加号。直接执行SELECT * FROM Table WHERE NAME LIKE '%+%'时,Oracle会把+当成通配符处理,自然查不到包含字面加号的数据。
解决方法
方法1:使用ESCAPE子句转义加号
指定一个转义字符(比如反斜杠\),将加号标记为字面量:
SELECT * FROM Table WHERE NAME LIKE '%\+%' ESCAPE '\';
也可以用其他未在字段中出现的字符作为转义符,比如#:
SELECT * FROM Table WHERE NAME LIKE '%#+%' ESCAPE '#';
方法2:使用正则表达式函数REGEXP_LIKE
通过正则表达式匹配字面加号,两种写法都可行:
-- 转义加号 SELECT * FROM Table WHERE REGEXP_LIKE(NAME, '\+'); -- 将加号放在字符组中(无需转义) SELECT * FROM Table WHERE REGEXP_LIKE(NAME, '[+]');
方法3:用INSTR函数判断位置
检查加号在字符串中的位置是否大于0,以此筛选目标数据:
SELECT * FROM Table WHERE INSTR(NAME, '+') > 0;
内容的提问来源于stack exchange,提问作者Ruser-lab9
相关产品推荐
相关产品推荐

