http://www.lmwlove.com/ac/ID878
有很多朋友寫了幾年的like搜索,可能對like后面通配符的用法都不了解,甚至於%的作用是什么都不清楚。在這篇文章中,我們就一起來學習一下like查詢中通配符的用法吧。
我們寫的最多的查詢語句可能是這樣的
那么,上面sql語句中的%是起什么作用呢?
%,sql中查詢通配符,它匹配包含零個或多個字符的任意字符串
比如上面sql的意思就是查詢出name中包含'sql技術'的所有記錄。
因為%匹配零個或者多個字符。我們可以只使用一個%來查詢只是開始或結尾處包含'sql技術'的所有記錄,分別如下:
1,查詢所有name字段以sql技術開頭的記錄。
2,查詢所有name字段以sql技術結尾的記錄。
除了%外,可能我們有忽略掉sql中另一個通配符了,它就是下划線'_'。
_,匹配sql中任何單個字符
比如下面的sql
那么它將返回所有name長度為4,且以'bcd'結尾的所有記錄,比如abcd,ebcd都會滿足查詢條件,但aebcd就不滿足了,因為_是匹配單個字符。
有了匹配單個與多個字符的方法了,那么有沒有匹配指定范圍內字符的寫法呢?這個當然也是有的。就是使用范圍符中括號'[]'了。
[],指定[]內標識范圍或集合中的任何單個字符
比如,看下面的sql的寫法:
1,返回name字段以a或者b或者c開頭的所有記錄
2,返回name字段以a或者b或者c結尾的所有記錄
[]中集合還有一種寫法,就是以-來表示從某字符開始,到某字符結束。比如下面的sql語句
它表示查詢hr_staff表中name字段所有從a開始,到c結束開頭的記錄,它的作用與select * from hr_staff where name like '[a,b,c]%'是一樣的。還有[0-9]表示匹配從0到9中的任意數字。
有了在范圍內的寫法,對應就會有不在范圍內的寫法:
[^],表示不屬於[]指定范圍或集合的任何單個字符
比如:[^0-9]表示不匹配任何數字。
示例:我們要查詢表table1的col1列全為數字的記錄,sql語句可以這樣寫:
好了,看完這篇文章后,有沒有覺的對sql的查詢又有了新的了解呢,呵呵,歡迎大家一起討論。