sqlserver資料庫模糊查詢語句

2021-07-04 20:55:43 字數 4441 閱讀 7992

確切匹配: 

select * from hs_user where id=123 

模糊查詢 

select * from hs_user where id like '%123%'

%為萬用字元

萬用字元:(like用於字串,,,,,如果要對數字進行操作用in...in (200,230))

萬用字元描述示例

%包含零個或更多字元的任意字串。

where title like '%computer%' 將查詢處於書名任意位置的包含單詞 computer 的所有書名。

_(下劃線)

任何單個字元。

where au_fname like '_ean' 將查詢以 ean 結尾的所有 4 個字母的名字(dean、sean 等)。

[ ]指定範圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字元。

where au_lname like '[c-p]arsen' 將查詢以arsen 結尾且以介於 c 與 p 之間的任何單個字元開始的作者姓氏,例如,carsen、larsen、karsen 等。

[^]不屬於指定範圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字元。

where au_lname like 'de[^l]%' 將查詢以 de 開始且其後的字母不為 l 的所有作者的姓氏。

將萬用字元作為文字使用

可以將萬用字元模式匹配字串用作文字字串,方法是將萬用字元放在括號中。下表顯示了使用 like 關鍵字和 [ ] 萬用字元的示例。

符號含義like '5[%]'

5%like '[_]n'

_nlike '[a-cdf]'

a、b、c、d 或 f

like '[-acdf]'

-、a、c、d 或 f

like '[ [ ]'

[like ']'

]like 'abc[_]d%'

abc_d 和 abc_de

like 'abc[def]'

abcd、abce 和 abcf

使用 escape 子句的模式匹配

可搜尋包含乙個或多個特殊萬用字元的字串。例如,customers 資料庫中的 discounts 表可能儲存含百分號 (%) 的折扣值。若要搜尋作為字元而不是萬用字元的百分號,必須提供 escape 關鍵字和轉義符。例如,乙個樣本資料庫包含名為 comment 的列,該列含文字 30%。若要搜尋在 comment 列中的任何位置包含字串 30% 的任何行,請指定由 where comment like '%30!%%' escape '!' 組成的 where 子句。如果不指定 escape 和轉義符,sql server 將返回所有含字串 30 的行。

下例說明如何在 pubs 資料庫 titles 表的 notes 列中搜尋字串"50% off when 100 or more copies are purchased":

select notes from titles where notes like '50%% off when 100 or more copies are purchased' 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' 

go 意思就是: 

比如,我們要搜尋乙個字串     "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'

_nlike '[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]'

0like '[^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 語言字串中的轉義字元 '\'。

最後,看乙個更加複雜的匹配

select 1 where '[^a-z]abcde' like '\[\^a\-z\]%' escape '\'

1.使用   escape   關鍵字定義轉義符。在模式中,當轉義符置於萬用字元之前時,該萬用字元就解釋為普通字元。

SQL Server 資料庫增刪改查

sql server 資料庫 新增字段 alter table 表名 add 欄位名 varchar 50 null 修改字段 execute sp rename 表名.原欄位名 新欄位名 刪除字段 alter table 表名 drop column 欄位名 表中新增自增id alter tabl...

jdbc連線Sql server資料庫,並查詢資料

string driver com.microsoft.sqlserver.jdbc.sqlserverdriver string url jdbc sqlserver string user sa string password 123456 connection con null prepare...

資料庫模糊查詢

執行資料庫查詢時,有完整查詢和模糊查詢之分。一般模糊語句格式如下 select 字段 from 表 where 某欄位 like 條件 其中,關於條件,sql提供了四種匹配模式 可以匹配任意型別和任意長度的字元,有些情況下若是中文,請使用兩個百分號 表示。select from flow user ...