1. 程式人生 > >oracle使用like匹配特殊字元解決辦法

oracle使用like匹配特殊字元解決辦法




想要匹配出所有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 '\\'";


以此類推,其他特殊字元也可以使用 '\' 進行轉義。