如:查詢(xún)ZJ_STANDARD_ITEM表的name1字段包含"_("的數(shù)據(jù)
--以下的查詢(xún)語(yǔ)句執(zhí)行會(huì)發(fā)現(xiàn)所查詢(xún)的數(shù)據(jù)并不是我們想要數(shù)據(jù)
select * from ZJ_STANDARD_ITEM t where t.name1 like '%_(%';
原因分析
下劃線(xiàn)“_”在oracle中不是單純的表示下劃線(xiàn)的意思,而是表示匹配單一任何字符! 如以上查詢(xún)語(yǔ)句就表示"("左邊只要有任意字符都會(huì)被查詢(xún)到
【解決辦法】
使用 escape() 函數(shù)
escape關(guān)鍵字經(jīng)常用于使某些特殊字符,如通配符:'%','_‘轉(zhuǎn)義為它們?cè)瓉?lái)的字符的意義,被定義的轉(zhuǎn)義字符通常使用'',但是也可以使用其他的符號(hào)。
例如:上面的條件語(yǔ)句可以寫(xiě)成where t.name1 like '%_(%'escape ‘';,這個(gè)“\”可以改為其他的字符
--使用escape函數(shù)將"_"轉(zhuǎn)為下劃線(xiàn)的含義
select t.name1 from ZJ_STANDARD_ITEM t where t.name1 like '%\_(%'escape '\';
知識(shí)點(diǎn)擴(kuò)展:Oracle中LIKE模糊查詢(xún)的使用
Like 模糊查詢(xún)
占位符
% 替代一個(gè)或多個(gè)字符
_ 僅替代一個(gè)字符
[charlist] 字符列中的任何單一字符
[^charlist] 或者 [!charlist] 不在字符列中的任何單一字符
(1)查詢(xún) 用戶(hù)名以‘S'開(kāi)頭的員工信息
Select * from emp where ename like 'S%'
(2)查詢(xún) 用戶(hù)名以‘S'結(jié)尾的員工信息
Select * from emp where ename like '%S'
(3)查詢(xún)用戶(hù)名第二個(gè)字母是‘A'的員工信息
select * from emp where ename like '_A%'
(4)查詢(xún)用戶(hù)名第三個(gè)字母是‘A'的員工信息
select * from emp where ename like '__A%'
(5)查詢(xún)用戶(hù)名中包含 ‘A' 的員工信息
select * from emp where ename like '%A%'
(6)查詢(xún)用戶(hù)名中不包含 ‘A' 的員工信息
select * from emp where ename not like '%A%'
(7)從 "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開(kāi)頭的人:
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
(8)從 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開(kāi)頭的人:
SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
到此這篇關(guān)于Oracle使用like查詢(xún)時(shí)對(duì)下劃線(xiàn)的處理的文章就介紹到這了,更多相關(guān)Oracle like查詢(xún)下劃線(xiàn)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Oracle如何實(shí)現(xiàn)like多個(gè)值的查詢(xún)
- oracle sql語(yǔ)言模糊查詢(xún)--通配符like的使用教程詳解
- Oracle中Like與Instr模糊查詢(xún)性能大比拼
- Oracle 模糊查詢(xún)及l(fā)ike用法