2017-08-01 74 views
0

我上的Oracle 11g运行PLSQL开发者选择。用像返回的结果(字符

我的选择与像返回的结果与(字符虽然我没有要求

SELECT * FROM TableA a where a.cofiguration like '%a_mobile_sw'; 

也返回记录与配置与价值a_mobile_sw也a_mobile(SW

它是如何与“(”字符返回记录里面虽然没有要求?

+2

使用'LIKE'时,下划线匹配任何单个字符。 –

+1

我敢打赌你意外地发现了不好的数据。当然''a_mobile(sw''不是一个正确的配置名称?你可能只是想留下下划线为了突出这个问题!:-)至少做一个不同的列,看看是否有其他那里有不好的名字,然后把它带给别人注意,成为数据清理英雄。 –

回答

2

如果你搜索的下划线,你需要逃避它,就像这样:

SELECT * 
FROM TableA a 
where a.cofiguration like '%a\_mobile\_sw' escape '\'; 

随着like比较,%是一个多字符外卡,并且_是单个字符外卡,这就是为什么你看到奇怪的结果。通过转义下划线,您告诉Oracle将其视为下划线而不是通配符。