Oracle sql語言模糊查詢--like后面的通配符


關於like后面的條件,Oracle提供了四種匹配模式:

1,% :表示任意0個或多個字符。可匹配任意類型和長度的字符,有些情況下若是中文,請使用兩個百分號(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

將會把u_name為“張三”,“張貓三”、“三腳貓”,“唐三藏”等等有“三”的記錄全找出來。

另外,如果需要找出u_name中既有“三”又有“貓”的記錄,請使用and條件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'

若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%貓%'
雖然能搜索出“三腳貓”,但不能搜索出符合條件的“張貓三”。

2,_ : 表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度語句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”這樣u_name為三個字且中間一個字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三腳貓”這樣name為三個字且第一個字是“三”的;

 

3. regexp_like 正則表達式函數查詢


--查詢FieldName中以1開頭60結束的記錄並且長度是7位
select * from fzq where FieldName like '1____60';
select * from fzq where regexp_like(FieldName,'1....60');


--查詢FieldName中以1開頭60結束的記錄並且長度是7位並且全部是數字的記錄。
--使用like就不是很好實現了。
select * from fzq where regexp_like(FieldName,'1[0-9]{4}60');


-- 也可以這樣實現,使用字符集。
select * from fzq where regexp_like(FieldName,'1[[:digit:]]{4}60');


-- 查詢FieldName中不是純數字的記錄
select * from fzq where not regexp_like(FieldName,'^[[:digit:]]+$');


-- 查詢FieldName中不包含任何數字的記錄。
select * from fzq where regexp_like(FieldName,'^[^[:digit:]]+$');


--查詢以12或者1b開頭的記錄.不區分大小寫。
select * from fzq where regexp_like(FieldName,'^1[2b]','i');


--查詢以12或者1b開頭的記錄.區分大小寫。
select * from fzq where regexp_like(FieldName,'^1[2B]');


-- 查詢數據中包含空白的記錄。
select * from fzq where regexp_like(FieldName,'[[:space:]]');


--查詢所有包含小寫字母或者數字的記錄。
select * from fzq where regexp_like(FieldName,'^([a-z]+|[0-9]+)$');


--查詢任何包含標點符號的記錄。
select * from fzq where regexp_like(FieldName,'[[:punct:]]');


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM