《Mysql必讀sql like通配符與模糊查詢》要點:
本文介紹了Mysql必讀sql like通配符與模糊查詢,希望對您有用。如果有疑問,可以聯系我們。
MYSQL數據庫1,sql like對時間查詢的處理方法
sql數據表中有savetime(smalldatetime類型)字段,表中有兩條記錄,savetime值為:2005-3-8 12:12:00和2005-6-6 14:02:02
用以下語法得不到搜索結果:?
?
MYSQL數據庫sql幫助中說:
"當搜索 datetime 值時,推薦使用 like,因為 datetime 項可能包含各種日期部分.例如,如果將值 19981231 9:20 插入到名為 arrival_time 的列中,則子句 where arrival_time = 9:20 將無法找到 9:20 字符串的精確匹配,因為 sql server 將其轉換為 1900 年 1 月 1 日上午 9:20.然而,子句 where arrival_time like '%9:20%' 將找到匹配."
后運行下面語句select soft.*, cast(soft.savetime as varchar(20)) as strdatetime,
發現
sql把smalldatetime格試轉成:
03 8 2005 12:12pm
我何用 like'%2005-3-8%'搜索到2005年3月8日所有的記錄?
?
MYSQL數據庫2, sql對like 操作中的特殊字符處理方法:
sql server查詢過程中,單引號 ' 是特殊字符,所以在查詢的時候要轉換成雙單引號 '' .
在like操作還有以下特殊字符:下劃線_,百分號%,方括號[],尖號^.
MYSQL數據庫其用途如下:
下劃線:用于代替一個任意字符(相當于正則表達式中的 ? )
百分號:用于代替任意數目的任意字符(相當于正則表達式中的 * )
方括號:用于轉義(事實上只有左方括號用于轉義,右方括號使用最近優先原則匹配最近的左方括號)
尖號:用于排除一些字符進行匹配(這個與正則表達式中的一樣)
以下是一些匹配的舉例,需要說明的是,只有like操作才有這些特殊字符,=操作是沒有的.
?
MYSQL數據庫在實際進行處理的時候,對于=操作,我們一般只需要如此替換:
' -> ''
對于like操作,需要進行以下替換(注意順序也很重要)
?
MYSQL數據庫3,sql like 通配符特殊用法:escape
MYSQL數據庫闡述escape 的作用:
1.使用?? escape?? 關鍵字定義轉義符.在模式中,當轉義符置于通配符之前時,該通配符就解釋為普通字符.例如,要搜索在任意位置包含字符串?? 5%?? 的字符串,請使用:???
where?? columna?? like?? '%5/%%'?? escape?? '/'
但是在mysql中好像不能使用"".
2.escape?? 'escape_character'???
允許在字符串中搜索通配符而不是將其作為通配符使用.
escape_character?? 是放在通配符前表示此特殊用途的字符.??
?
MYSQL數據庫意思就是:
比如,要搜索一個字符串???? "g_"???? ,如果直接???? like???? "g_",那么?? "_"的作用就是通配符,而不是字符,結果,我們會查到比如???? "ga","gb","gc",而不是我們需要的?? "g_".
用???? like?? 'gs_'?? escape?? 's'???? 's'表示特殊用法標志
3.
MYSQL數據庫結果為:
name???????????????
----------???
11%33
12%33
總結:
?
MYSQL數據庫對于字符串中出現的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它們包含起來,這樣在匹配模式(pattern)中,它們就被當作普通字符對待了.
1,用 like '[[]' 匹配特殊字符 '['
select 1 where '[abcde' like '[[]%'
MYSQL數據庫2,用 like ']' 匹配特殊字符 ']'
select 1 where ']abcde' like ']%'
MYSQL數據庫3,用 like '[[]]' 匹配特殊字符 '[]'
select 1 where '[]abcde' like '[[]]%%'
MYSQL數據庫4,用 like '[_]' 匹配特殊字符 '_'
select 1 where '_abcde' like '[_]%'
MYSQL數據庫5,用 like '[%]' 匹配特殊字符 '%'
select 1 where 'abc%de' like 'abc[%]de'
對于其他的特殊字符:'^', '-', ']' 因為它們本身在包含在 '[]' 中使用,所以需要用另外的方式來轉義,于是就引入了 like 中的 escape 子句.
注意,escape 可以轉義所有的特殊字符.
?
MYSQL數據庫規律就是用 escape 后面緊跟著的字符來做轉義字符. escape 后面的字符相當于 c 語言字符串中的轉義字符 ''.
最后,看一個更加復雜的匹配
?
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/6477.html