亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

sql like 時間 通配符 模糊查詢技巧及特殊字符

2024-07-21 02:52:30
字體:
來源:轉載
供稿:網友

最近碰到like模糊匹配的問題,找到一些答案接觸迷惑,覺得有知識是自己忽略的,現在整理出來,既強化記憶,又是一次記錄,以下轉自一篇Blog,關于sql server like的通配符和字符帶通配符的處理辦法。

1. SQL like對時間查詢的處理方法

    SQL數據表中有savetime(smalldatetime類型)字段,表中有兩條記錄,savetime值為:2005-3-8 12:12:00和2005-6-6 14:02:02      我用下面語句什么也搜不出來      select * from soft where soft.savetime like'%2005-3-8%'      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日所有的記錄?

     select * from soft where datediff(d,soft.savetime,convert(datetime,'20050308',121))=0      ----     select * from soft where convert(char(10),soft.savetime,121)='20050308'

2. SQL對like 操作中的特殊字符處理方法:

SQL Server查詢過程中,單引號 ' 是特殊字符,所以在查詢的時候要轉換成雙單引號 '' 。

在like操作還有以下特殊字符:下劃線_,百分號%,方括號[],尖號^。

其用途如下:

下劃線:用于代替一個任意字符(相當于正則表達式中的 ? )

百分號:用于代替任意數目的任意字符(相當于正則表達式中的 * )

方括號:用于轉義(事實上只有左方括號用于轉義,右方括號使用最近優先原則匹配最近的左方括號)

尖號:用于排除一些字符進行匹配(這個與正則表達式中的一樣)

以下是一些匹配的舉例,需要說明的是,只有like操作才有這些特殊字符,=操作是沒有的。

a_b...        a[_]b%

a%b...       a[%]b%

a[b...       a[[]b%

a]b...       a]b%

a[]b...      a[[]]b%

a[^]b...     a[[][^]]b%

a[^^]b...    a[[][^][^]]b%

在實際進行處理的時候,對于=操作,我們一般只需要如此替換:

' -> ''

對于like操作,需要進行以下替換(注意順序也很重要)

[ -> [[]     (這個必須是第一個替換的!!)

% -> [%]    (這里%是指希望匹配的字符本身包括的%而不是專門用于匹配的通配符)

_ -> [_]

^ -> [^]

3,SQL Like 通配符特殊用法:Escape

    闡述Escape 的作用:

    1.使用   ESCAPE   關鍵字定義轉義符。在模式中,當轉義符置于通配符之前時,該通配符就解釋為普通字符。例如,要搜索在任意位置包含字符串   5%   的字符串,請使用:        WHERE   ColumnA   LIKE   '%5/%%'   ESCAPE   '/'     但是在MySQL中好像不能使用"/"。    2.ESCAPE   'escape_character' 允許在字符串中搜索通配符而不是將其作為通配符使用。escape_character   是放在通配符前表示此特殊用途的字符。        SELECT   * FROM   finances WHERE   description   LIKE   'gs_'   ESCAPE   'S'        意思就是:     比如,我們要搜索一個字符串     "g_"     ,如果直接     like     "g_",那么   "_"的作用就是通配符,而不是字符,結果,我們會查到比如 "ga","gb","gc",而不是我們需要的   "g_". 用     LIKE   'gs_'   ESCAPE   'S'     's'表示特殊用法標志

 

    3.create   table   a   (name   varchar(10))     go     insert   into   a   select   '11%22'     union   all   select   '11%33'     union   all   select   '12%33'     go     select   *   from   a     WHERE   name   LIKE   '%/%33'   ESCAPE   '/'   --指定用'/'符號來說明跟在其后面的通配符字符為普能字符。(第二個%是字符不是通配符來的)     go     drop   table   a

    結果為:     name                    ----------        11%33     12%33

 

    總結:

    %:匹配零個及多個任意字符; _:與任意單字符匹配; []:匹配一個范圍; [^]:排除一個范圍

    Symbol Meaning     like '5[%]' 5%      like '[_]n' _n      like '[a-cdf]' a, b, c, d, or f      like '[-acdf]' -, a, c, d, or f      like '[[]' [      like ']' ]      like 'abc[_]d%' abc_d and abc_de      like 'abc[def]' abcd, abce, and abcf      like '[^1-9]' 0     like '[^1-9b-z]' 0, a

    對于字符串中出現的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它們包含起來,這樣在匹配模式(pattern)中,它們就被當作普通字符對待了。

    1. 用 like '[[]' 匹配特殊字符 '['    select 1 where '[ABCDE' like '[[]%'

    2. 用 like ']' 匹配特殊字符 ']'

    select 1 where ']ABCDE' like ']%'

    3. 用 like '[[]]' 匹配特殊字符 '[]'

    select 1 where '[]ABCDE' like '[[]]%%'

    4. 用 like '[_]' 匹配特殊字符 '_'

    select 1 where '_ABCDE' like '[_]%'

    5. 用 like '[%]' 匹配特殊字符 '%'

    select 1 where 'ABC%DE' like 'ABC[%]DE'

    對于其他的特殊字符:'^', '-', ']' 因為它們本身在包含在 '[]' 中使用,所以需要用另外的方式來轉義,于是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以轉義所有的特殊字符。

    select 1 where '^ABCDE' like '!^ABCDE' escape '!'    select 1 where '-ABCDE' like '!-ABCDE' escape '!'    select 1 where ']ABCDE' like '!]ABCDE' escape '!'

    select 1 where '%ABCDE' like '/%ABCDE' escape '/'    select 1 where '%ABCDE' like '!%ABCDE' escape '!'    select 1 where '%ABCDE' like '#%ABCDE' escape '#'    select 1 where '%ABCDE' like '@%ABCDE' escape '@'

    select 1 where '[ABCDE' like '![ABCDE' escape '!'    select 1 where ']ABCDE' like '!]ABCDE' escape '!'    規律就是用 escape 后面緊跟著的字符來做轉義字符。 escape 后面的字符相當于 C 語言字符串中的轉義字符 '/'。

    最后,看一個更加復雜的匹配


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
俺也去精品视频在线观看| 欧美激情综合色| 日韩免费看的电影电视剧大全| 久久久久久久网站| 日韩成人性视频| 91久久久久久久久久久| 日韩一区二区福利| 中文字幕成人在线| 久国内精品在线| 欧美精品在线观看| 日韩av电影免费观看高清| 日韩欧美在线视频| 国产精品99蜜臀久久不卡二区| 午夜精品久久久久久久男人的天堂| 亚洲综合在线小说| 亚洲精品国精品久久99热| 一夜七次郎国产精品亚洲| 成人av.网址在线网站| 大量国产精品视频| 在线观看视频亚洲| 国产欧美婷婷中文| 欧美日韩综合视频网址| 亚洲精品资源美女情侣酒店| 久久精品国产成人| 欧美韩国理论所午夜片917电影| 亚洲日本欧美日韩高观看| 亚洲国产欧美自拍| 人人做人人澡人人爽欧美| 欧美亚洲在线视频| 欧美成人久久久| 亚洲欧美变态国产另类| 亚洲欧美综合精品久久成人| 久久亚洲精品小早川怜子66| 国产精品久久久久久久久久久久久| 亚洲精品久久久久久久久久久久久| 久久999免费视频| 日韩精品中文在线观看| 国产噜噜噜噜久久久久久久久| 26uuu另类亚洲欧美日本老年| 亚洲国产高清福利视频| 亚洲精品影视在线观看| 成人a级免费视频| 亚洲精品美女久久久久| 国产97色在线| 日韩激情第一页| 亚洲18私人小影院| 亚洲精品日产aⅴ| 亚洲精品欧美极品| 国产欧美va欧美va香蕉在线| 亚洲欧美激情在线视频| 欧美一级片久久久久久久| 精品国产一区二区三区久久狼5月| 国产精品久久久久久久久久久新郎| 欧美成人在线影院| 日韩中文字幕国产精品| 国产精品丝袜久久久久久不卡| 免费成人高清视频| 欧美亚洲成人精品| 中文字幕在线日韩| 国产精品一区久久久| 成人高清视频观看www| 视频在线观看一区二区| 欧美激情视频网站| 91在线看www| 日本一区二区三区四区视频| 日韩精品久久久久久福利| 欧美日本在线视频中文字字幕| 欧美精品第一页在线播放| 国产精品亚洲激情| 久色乳综合思思在线视频| 97视频免费在线看| 亚洲精品美女久久久久| 伊人成人开心激情综合网| 亚洲精品久久久久久久久久久久| 久久资源免费视频| 精品久久中文字幕| 97精品国产97久久久久久| 欧美高清不卡在线| 成人黄色大片在线免费观看| 国产视频久久久久久久| 永久免费精品影视网站| 中文字幕亚洲欧美日韩在线不卡| 成人激情综合网| 精品国内亚洲在观看18黄| 亚洲a∨日韩av高清在线观看| www.亚洲天堂| 精品国产乱码久久久久久虫虫漫画| 国产日产欧美精品| 日韩av片免费在线观看| 日韩二区三区在线| 久久免费福利视频| 亚洲丝袜在线视频| 日韩中文理论片| 精品露脸国产偷人在视频| 国产精品美女无圣光视频| 国产精品88a∨| 亚洲精品国产免费| 欧美成人国产va精品日本一级| 亚洲片在线观看| 久久久久九九九九| 中文字幕一区二区精品| 欧美性猛交xxxx免费看| 欧美日韩国产综合视频在线观看中文| 中文字幕亚洲综合久久筱田步美| 亚洲精品videossex少妇| 91精品国产高清久久久久久| 精品中文字幕久久久久久| 欧美精品18videosex性欧美| 欧美午夜精品伦理| 亚洲欧美日韩综合| 成人性教育视频在线观看| 91精品国产777在线观看| 一色桃子一区二区| 中文字幕国内精品| 午夜精品理论片| 国产精品亚洲精品| 国产精品高精视频免费| 日韩在线播放视频| 日韩精品视频免费在线观看| 久久在线免费观看视频| 亚洲色图在线观看| 一级做a爰片久久毛片美女图片| 亚洲第一精品福利| 国产精自产拍久久久久久| 日韩欧美国产成人| 亚洲图片在区色| 亚洲第一天堂av| 91精品视频免费| 秋霞av国产精品一区| 亚洲成人黄色网| 国产精品偷伦视频免费观看国产| 日韩高清免费观看| 中日韩美女免费视频网站在线观看| 国产欧美久久一区二区| 亚洲欧美国产另类| 美女国内精品自产拍在线播放| 亚洲韩国欧洲国产日产av| 在线看片第一页欧美| 日本精品一区二区三区在线| 久久精品视频在线观看| 亚洲激情中文字幕| 最新69国产成人精品视频免费| 91精品啪在线观看麻豆免费| 一区二区欧美亚洲| 日韩欧美国产一区二区| 一本大道香蕉久在线播放29| 久久九九国产精品怡红院| 亚洲乱码一区二区| 欧美日韩第一视频| 国产精品都在这里| 亚洲精品中文字| 亚洲第一偷拍网| 中文日韩电影网站| 色99之美女主播在线视频| 精品国产成人在线| 欧美有码在线观看| 精品久久久精品| 亚洲毛片在线观看| 日韩av在线最新| 午夜剧场成人观在线视频免费观看| 亚洲一区二区福利| 亚洲精品视频久久| 国产精品视频资源| 久久久精品久久|