在oracle中,like關鍵字可以與where子句配合使用,用於實現模糊查詢的效果,配合通配符使用可以限製表達式條件,語法為“SELECT*FROM user WHERE uname LIKE 通配符” 。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
一、我們可以在where子句中使用like關鍵字來達到Oracle模糊查詢的效果;在Where子句中,可以對datetime、 char、varchar字段類型的列用Like關鍵字配合通配符來實現模糊查詢,以下是可使用的通配符:
(1)% :零或多個字符,使用%有三種情況
字段 like '%關鍵字%'字段包含”關鍵字”的記錄
字段 like '關鍵字%'字段以”關鍵字”開始的記錄
#字段 like ' %關鍵字'字段以”關鍵字”結束的記錄
例子:
SELECT * FROM [user] WHERE uname LIKE ‘%三%’
搜尋結果:“張三”,“小三”、“三腳貓”,“貓三腳” 有「三」 的記錄全找出來。
SELECT * FROM [user] WHERE uname LIKE ‘%三’ (从后开始匹配)
搜尋結果:“張三”,“小三”
另外,如果需要找出uname中既有“三”又有“貓”的記錄,請使用and條件
SELECT *FROM [user] WHERE uname LIKE ‘%三%’ AND uname LIKE ‘%猫%’
若使用SELECT * FROM [user] WHERE uname LIKE '%三%貓%',雖然能搜尋「三腳貓」,但不能搜尋出「貓三腳」。
(2)_: 單一任何字元(底線)常用來限製表達式的字元長度語句:
範例:
SELECT * FROM [user] WHERE uname LIKE ‘三’
搜尋結果:「貓三腳」這樣uname為三個字元且中間一個是「三」的;
SELECT * FROM [user] WHERE uname LIKE ‘三__’;
搜尋結果:「三腳貓」這樣uname為三個字元且第一個是「三」的;
(3)[]:在某一範圍內的字符,表示括號內所列字符中的一個(類似正則表達式)。指定一個字元、字串或範圍,要求所匹配物件為它們中的任一個。
範例:
SELECT * FROM [user] WHERE u_name LIKE ‘[张李王]三’
搜尋結果:「張三」、「李三」、「王三」(而非「張李王三」);
如[ ]內有一系列字元(01234、abcde之類的)則可略寫為「0-4」、「a-e」
SELECT * FROM [user] WHERE u_name LIKE ‘老[1-9]’
搜尋結果:「老1」、「老2」、… 、「老9」;
(4)[^]: 不在某個範圍內的字符,用法與[ ]相反。
二、在Oracle中提供了instr(strSource,strTarget)函數,比使用’%關鍵字%’的模式效率高很多。
instr函數也有三種情況:
instr(字段,'關鍵字')>0相當於 字段like '%關鍵字%'
instr(字段,'關鍵字')=1相當於 字段like '關鍵字%'
instr(字段,'關鍵字')=0相當於 字段not like '%關鍵字%'
範例:
SELECT * FROM [user] WHEREinstr(uname ,’三’)>0
用法參考上面的Like 即可
特殊用法:
select id, namefrom user where instr(‘101914, 104703’, id) > 0;
它等價於
select id, namefrom user where id = 101914 or id = 104703;
推薦教學:《Oracle影片教學》
以上是oracle中like的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!