亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

sql中的like統(tǒng)配符

系統(tǒng) 2503 0

LIKE

確定給定的字符串是否與指定的模式匹配。模式可以包含常規(guī)字符和通配符字符。模式匹配過程中,常規(guī)字符必須與字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。與使用 = 和 != 字符串比較運(yùn)算符相比,使用通配符可使 LIKE 運(yùn)算符更加靈活。如果任何參數(shù)都不屬于字符串?dāng)?shù)據(jù)類型,Microsoft? SQL Server? 會(huì)將其轉(zhuǎn)換成字符串?dāng)?shù)據(jù)類型(如果可能)。

語法

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

參數(shù)

match_expression

任何字符串?dāng)?shù)據(jù)類型的有效 SQL Server 表達(dá)式。

pattern

match_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。

通配符 描述 示例
% 包含零個(gè)或更多字符的任意字符串。 WHERE title LIKE '%computer%' 將查找處于書名任意位置的包含單詞 computer 的所有書名。
_(下劃線) 任何單個(gè)字符。 WHERE au_fname LIKE '_ean' 將查找以 ean 結(jié)尾的所有 4 個(gè)字母的名字(Dean、Sean 等)。
[ ] 指定范圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個(gè)字符。 WHERE au_lname LIKE '[C-P]arsen' 將查找以arsen 結(jié)尾且以介于 C 與 P 之間的任何單個(gè)字符開始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^] 不屬于指定范圍 ([a-f]) 或集合 ([abcdef]) 的任何單個(gè)字符。 WHERE au_lname LIKE 'de[^l]%' 將查找以 de 開始且其后的字母不為 l 的所有作者的姓氏。

escape_character

字符串?dāng)?shù)據(jù)類型分類中的所有數(shù)據(jù)類型的任何有效 SQL Server 表達(dá)式。 escape_character 沒有默認(rèn)值,且必須僅包含一個(gè)字符。

結(jié)果類型

Boolean

結(jié)果值

如果 match_expression 匹配指定模式,LIKE 將返回 TRUE。

注釋

當(dāng)使用 LIKE 進(jìn)行字符串比較時(shí),模式字符串中的所有字符都有意義,包括起始或尾隨空格。如果查詢中的比較要返回包含"abc "(abc 后有一個(gè)空格)的所有行,則將不會(huì)返回包含"abc"(abc 后沒有空格)的列所在行。但是可以忽略模式所要匹配的表達(dá)式中的尾隨空格。如果查詢中的比較要返回包含"abc"(abc 后沒有空格)的所有行,則將返回以"abc"開始且具有零個(gè)或多個(gè)尾隨空格的所有行。

由于數(shù)據(jù)存儲(chǔ)方式的原因,使用包含 char varchar 數(shù)據(jù)模式的字符串比較可能無法通過 LIKE 比較。了解每種數(shù)據(jù)類型的存儲(chǔ)方式以及導(dǎo)致 LIKE 比較失敗的原因十分重要。下面的示例將局部 char 變量傳遞給存儲(chǔ)過程,然后使用模式匹配查找某個(gè)作者的所有著作。在此過程中,作者的姓將作為變量傳遞。

    CREATE PROCEDURE find_books @AU_LNAME char(20)
AS
SELECT @AU_LNAME = RTRIM(@AU_LNAME) + '%'
SELECT t.title_id, t.title 
FROM authors a, titleauthor ta, titles t
WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id
   AND a.au_lname LIKE @AU_LNAME

  

當(dāng)名字中包含的字符數(shù)小于 20 時(shí), char 變量 ( @ AU_LNAME) 將包含尾隨空格,這導(dǎo)致 find_books 過程中沒有行返回。由于 au_lname 列為 varchar 類型,所以沒有尾隨空格。因?yàn)槲搽S空格是有意義的,所以此過程失敗。

但下面的示例是成功的,因?yàn)槲搽S空格沒有被添加到 varchar 變量中:

    USE pubs
GO
CREATE PROCEDURE find_books2 @au_lname varchar(20)
AS
SELECT t.title_id, t.title 
FROM authors a, titleauthor ta, titles t
WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id
   AND a.au_lname LIKE @au_lname + '%'

EXEC find_books2 'ring'

  

下面是結(jié)果集:

    title_id title                                                                            
-------- ---------------------------------------------------------------
MC3021   The Gourmet Microwave                                                            
PS2091   Is Anger the Enemy?                                                              
PS2091   Is Anger the Enemy?                                                              
PS2106   Life Without Fear                                                                

(4 row(s) affected)

  
使用 LIKE 的模式匹配

當(dāng)搜索 datetime 值時(shí),推薦使用 LIKE,因?yàn)? datetime 項(xiàng)可能包含各種日期部分。例如,如果將值 19981231 9:20 插入到名為 arrival_time 的列中,則子句 WHERE arrival_time = 9:20 將無法找到 9:20 字符串的精確匹配,因?yàn)?SQL Server 將其轉(zhuǎn)換為 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%' 將找到匹配。

LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。當(dāng)所有參數(shù),包括 match_expression pattern escape_character (如果有)都是 ASCII 字符數(shù)據(jù)類型時(shí),將執(zhí)行 ASCII 模式匹配。如果其中任何參數(shù)屬于 Unicode 數(shù)據(jù)類型,則所有參數(shù)將被轉(zhuǎn)換為 Unicode 并執(zhí)行 Unicode 模式匹配。當(dāng)對 Unicode 數(shù)據(jù)( nchar nvarchar 數(shù)據(jù)類型)使用 LIKE 時(shí),尾隨空格是有意義的。但是對于非 Unicode 數(shù)據(jù),尾隨空格沒有意義。Unicode LIKE 與 SQL-92 標(biāo)準(zhǔn)兼容。ASCII LIKE 與 SQL Server 的早期版本兼容。

下面的一系列示例顯示 ASCII LIKE 模式匹配與 Unicode LIKE 模式匹配所返回的行之間的差異:

    -- ASCII pattern matching with char column
CREATE TABLE t (col1 char(30))
INSERT INTO t VALUES ('Robert King')
SELECT * 
FROM t 
WHERE col1 LIKE '% King'   -- returns 1 row

-- Unicode pattern matching with nchar column
CREATE TABLE t (col1 nchar(30))
INSERT INTO t VALUES ('Robert King')
SELECT * 
FROM t 
WHERE col1 LIKE '% King'   -- no rows returned

-- Unicode pattern matching with nchar column and RTRIM
CREATE TABLE t (col1 nchar (30))
INSERT INTO t VALUES ('Robert King')
SELECT * 
FROM t 
WHERE RTRIM(col1) LIKE '% King'   -- returns 1 row

  

<!--NOTE-->

說明 如果使用 LIKE 進(jìn)行字符串比較,模式字符串中的所有字符都有意義,包括起始空格或尾隨空格。

<!--/NOTE-->

使用 % 通配符

如果指定 LIKE '5%',SQL Server 將搜索后面帶有零個(gè)或多個(gè)任意字符的數(shù)字 5。

例如,此查詢將顯示數(shù)據(jù)庫中所有的系統(tǒng)表,因?yàn)樗鼈兌家宰帜?sys 開始:

    SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'sys%'

  

<!--NOTE-->

說明 請注意:系統(tǒng)表可以隨版本不同而更改。推薦使用信息架構(gòu)視圖或適用的存儲(chǔ)過程處理 SQL Server 系統(tǒng)表。

<!--/NOTE-->

若要查閱非系統(tǒng)表的所有對象,請使用 NOT LIKE 'sys%'。如果共有 32 個(gè)對象且 LIKE 找到 13 個(gè)與模式匹配的名稱,則 NOT LIKE 將找到 19 個(gè)與 LIKE 模式不匹配的對象。

使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名稱都相同。可能僅得到 14 個(gè)名稱(而不是 19 個(gè)),除了系統(tǒng)表名稱外,所有以 s 開始或第二個(gè)字母為 y 或第三個(gè)字母為 s 的名稱也都將從結(jié)果中消除。這是因?yàn)橛梅聪蛲ㄅ浞ヅ渥址欠植襟E進(jìn)行計(jì)算的,一次一個(gè)通配符。如果在計(jì)算過程中任一環(huán)節(jié)匹配失敗,那么就會(huì)將其消除。

將通配符作為文字使用

可以將通配符模式匹配字符串用作文字字符串,方法是將通配符放在括號(hào)中。下表顯示了使用 LIKE 關(guān)鍵字和 [ ] 通配符的示例。

符號(hào) 含義
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[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 子句的模式匹配

可搜索包含一個(gè)或多個(gè)特殊通配符的字符串。例如, customers 數(shù)據(jù)庫中的 discounts 表可能存儲(chǔ)含百分號(hào) (%) 的折扣值。若要搜索作為字符而不是通配符的百分號(hào),必須提供 ESCAPE 關(guān)鍵字和轉(zhuǎn)義符。例如,一個(gè)樣本數(shù)據(jù)庫包含名為 comment 的列,該列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,請指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 組成的 WHERE 子句。如果不指定 ESCAPE 和轉(zhuǎn)義符,SQL Server 將返回所有含字符串 30 的行。

下例說明如何在 pubs 數(shù)據(jù)庫 titles 表的 notes 列中搜索字符串"50% off when 100 or more copies are purchased":

    USE pubs
GO
SELECT notes
FROM titles
WHERE notes LIKE '50%% off when 100 or more copies are purchased' 
   ESCAPE '%'
GO

  
示例
A. 使用帶 % 通配符的 LIKE

下例查找 authors 表中所有區(qū)號(hào)為 415 的電話號(hào)碼。

    USE pubs
GO
SELECT phone
FROM authors
WHERE phone LIKE '415%'
ORDER by au_lname
GO

  

下面是結(jié)果集:

    phone        
------------ 
415 658-9932 
415 548-7723 
415 836-7128 
415 986-7020 
415 836-7128 
415 534-9219 
415 585-4620 
415 354-7128 
415 834-2919 
415 843-2991 
415 935-4228 

(11 row(s) affected)

  
B. 使用帶 % 通配符的 NOT LIKE

下例查找 authors 表中所有區(qū)號(hào)不是 415 的電話號(hào)碼。

    USE pubs
GO
SELECT phone
FROM authors
WHERE phone NOT LIKE '415%'
ORDER BY au_lname
GO

  

下面是結(jié)果集:

    phone        
------------ 
503 745-6402 
219 547-9982 
615 996-8275 
615 297-2723 
707 938-6445 
707 448-4982 
408 286-2428 
301 946-8853 
801 826-0752 
801 826-0752 
913 843-0462 
408 496-7223 

(12 row(s) affected)

  
C. 使用 ESCAPE 子句

下例使用 ESCAPE 子句和轉(zhuǎn)義符查找 mytbl2 表的 c1 列中的精確字符串 10-15%。

    USE pubs
GO
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
      WHERE TABLE_NAME = 'mytbl2')
   DROP TABLE mytbl2
GO
USE pubs
GO
CREATE TABLE mytbl2
(
 c1 sysname
)
GO
INSERT mytbl2 VALUES ('Discount is 10-15% off')
INSERT mytbl2 VALUES ('Discount is .10-.15 off')
GO
SELECT c1 
FROM mytbl2
WHERE c1 LIKE '%10-15!% off%' ESCAPE '!'
GO

  
D. 使用 [ ] 通配符

下例查找名字為 Cheryl 或 Sheryl 的作者。

    USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_fname LIKE '[CS]heryl'
ORDER BY au_lname ASC, au_fname ASC
GO

  

下例查找姓為 Carson、Carsen、Karson 或 Karsen 的作者所在的行。

    USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE '[CK]ars[eo]n'
ORDER BY au_lname ASC, au_fname ASC
GO

  
<!--RELATEDTOPICSLIST-->

sql中的like統(tǒng)配符


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性欧美4k高清精品 | 国产三级在线精品男人的天堂 | 久久综合久久自在自线精品自 | 九九影院在线观看 | 日韩毛片欧美一级国产毛片 | 9re视频这里只有精品 | 最近免费中文字幕大全免费版视频 | 亚洲视频不卡 | 久草热久草在线 | 99久久99热精品免费观看国产 | 99久久精品费精品国产一区二区 | 麻豆精品永久免费视频 | 日韩欧美毛片免费观看视频 | 精品国产高清a毛片无毒不卡 | 久久国产一片免费观看 | 日本亚洲免费 | 九九亚洲 | 久久亚洲综合网 | 久久亚洲欧美成人精品 | 黑人边吃奶边扎下面激情视频 | 国产在线视频一区 | 私人影院在线免费观看 | 一区二区精品久久 | 久久精品青草社区 | 爱爱小视频在线观看网站 | 99r在线| 两性色午夜视频免费老司机 | 国产视频成人 | 日韩网站在线 | 成人影院在线观看kkk4444 | 国产福利在线视频 | 免费一看一级毛片人 | 久久综合玖玖爱中文字幕 | 中文字幕在亚洲第一在线 | 三级a做爰大乳在线观看 | 久久99中文字幕久久 | 国产一级特黄全黄毛片 | 欧美性猛交xxx嘿人猛交 | 色综合欧美综合天天综合 | 色综合国产 | 伊人久久成人成综合网222 |