sql搜索like通配符的用法詳解


http://www.lmwlove.com/ac/ID878

有很多朋友寫了幾年的like搜索,可能對like后面通配符的用法都不了解,甚至於%的作用是什么都不清楚。在這篇文章中,我們就一起來學習一下like查詢中通配符的用法吧。

我們寫的最多的查詢語句可能是這樣的

select * from computes where 字段 name '%sql技術%'


那么,上面sql語句中的%是起什么作用呢?

%,sql中查詢通配符,它匹配包含零個或多個字符的任意字符串
比如上面sql的意思就是查詢出name中包含'sql技術'的所有記錄。 
因為%匹配零個或者多個字符。我們可以只使用一個%來查詢只是開始或結尾處包含'sql技術'的所有記錄,分別如下:
1,查詢所有name字段以sql技術開頭的記錄。

select * from computes where 字段 name 'sql技術%'


2,查詢所有name字段以sql技術結尾的記錄。

select * from computes where 字段 name '%sql技術'


除了%外,可能我們有忽略掉sql中另一個通配符了,它就是下划線'_'。

_,匹配sql中任何單個字符
比如下面的sql

select * from hr_staff where name like '_bcd'


那么它將返回所有name長度為4,且以'bcd'結尾的所有記錄,比如abcd,ebcd都會滿足查詢條件,但aebcd就不滿足了,因為_是匹配單個字符。

有了匹配單個與多個字符的方法了,那么有沒有匹配指定范圍內字符的寫法呢?這個當然也是有的。就是使用范圍符中括號'[]'了。

[],指定[]內標識范圍或集合中的任何單個字符
比如,看下面的sql的寫法:
1,返回name字段以a或者b或者c開頭的所有記錄

select * from hr_staff where name like '[a,b,c]%'


2,返回name字段以a或者b或者c結尾的所有記錄

select * from hr_staff where name like '%[a,b,c]'


[]中集合還有一種寫法,就是以-來表示從某字符開始,到某字符結束。比如下面的sql語句

select * from hr_staff where name like '[a-c]%'


它表示查詢hr_staff表中name字段所有從a開始,到c結束開頭的記錄,它的作用與select * from hr_staff where name like '[a,b,c]%'是一樣的。還有[0-9]表示匹配從0到9中的任意數字。

有了在范圍內的寫法,對應就會有不在范圍內的寫法:

[^],表示不屬於[]指定范圍或集合的任何單個字符
比如:[^0-9]表示不匹配任何數字。
示例:我們要查詢表table1的col1列全為數字的記錄,sql語句可以這樣寫:

select * from table1 where col1 not like '%[^0-9]%'


好了,看完這篇文章后,有沒有覺的對sql的查詢又有了新的了解呢,呵呵,歡迎大家一起討論。


免責聲明!

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



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