想要匹配出所有MC带有 "_" 的数据,
select * from lm where mc like '%_%' ;
这是一种错误的写法,因为 oracle会默认把 '_' 作为一个可以匹配任意一个字符的通配符。
正确写法:
select * from lm where mc like '%\_%'escape '\';
语法:like '%\_%' escape'\', 其中第一个 '\' 代表转义紧跟后一位的特殊字符(多个特殊字符需要写多个'\'进行转义), escape关键字 代表查询时过滤掉 '\' 这个字符。也就是说先用 '\'转义特殊字符,查询的时候再用 escape 关键字过滤掉 '\'。
由于 '\'在程序中也是特殊字符,所以也需要进行转义。String sql = "select * from lm where mc like '%\\_%' escape '\\'";
以此类推,其他特殊字符也可以使用 '\' 进行转义。