公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

LIKE的用法【轉】

admin
2010年12月14日 23:56 本文熱度 3563


LIKE

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



語法

match_expression_r [ NOT ] LIKE pattern [ ESCAPE escape_character ]

參數

match_expression_r

任何字符串數據類型的有效 SQL Server 表達式。

pattern

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

通配符 描述 示例

% 包含零個或更多字符的任意字符串。 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 的所有作者的姓氏。

escape_character

字符串數據類型分類中的所有數據類型的任何有效 SQL Server 表達式。escape_character 沒有默認值,且必須僅包含一個字符。

結果類型

Boolean

結果值

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

注釋

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

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

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

當名字中包含的字符數小于 20 時,char 變量 (@AU_LNAME) 將包含尾隨空格,這導致 find_books 過程中沒有行返回。由于 au_lname 列為 varchar 類型,所以沒有尾隨空格。因為尾隨空格是有意義的,所以此過程失敗。

但下面的示例是成功的,因為尾隨空格沒有被添加到 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'

下面是結果集:

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 的模式匹配

當搜索 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%' 將找到匹配。

LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。當所有參數,包括 match_expression_r、pattern 和 escape_character(如果有)都是 ASCII 字符數據類型時,將執行 ASCII 模式匹配。如果其中任何參數屬于 Unicode 數據類型,則所有參數將被轉換為 Unicode 并執行 Unicode 模式匹配。當對 Unicode 數據(nchar 或 nvarchar 數據類型)使用 LIKE 時,尾隨空格是有意義的。但是對于非 Unicode 數據,尾隨空格沒有意義。Unicode LIKE 與 SQL-92 標準兼容。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



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



使用 % 通配符

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

例如,此查詢將顯示數據庫中所有的系統表,因為它們都以字母 sys 開始:

SELECT TABLE_NAME

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME LIKE 'sys%'



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



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

使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名稱都相同。可能僅得到 14 個名稱(而不是 19 個),除了系統表名稱外,所有以 s 開始或第二個字母為 y 或第三個字母為 s 的名稱也都將從結果中消除。這是因為用反向通配符匹配字符串是分步驟進行計算的,一次一個通配符。如果在計算過程中任一環節匹配失敗,那么就會將其消除。


該文章在 2010/12/14 23:56:14 編輯過
相關文章
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品内射久久久 | 国产蜜桃一区二区三区在线观看 | 国偷自产视频一区二区久 | 国产自产视频一区二区三区 | 国产成人精品视频一区二区不卡 | 国产免费午夜福利在线播 | 91av在线播放 | av中文字幕在线播放 | 国产高级桑拿会所在线看 | 18处破外女出血在线 | 高潮潮喷精品在线 | 精品久久久久精品三级a | 91精彩视频在线观看 | 精品国产丝袜黑色高跟鞋 | 国产三级放荡的护士 | 91在线码无精品秘入口九色 | 国产亚洲欧美在线观看的 | 国产69精品久久久久观看软件 | 国产无你高清在线观看av | 国产高潮视频在线观看 | 国产成人福利美女观看视频 | 国产成人片欧美日本在线观看 | 国产成人毛片一区二区 | 国产一级性爱高清视频 | 囯产精品无码一区二区三区 | 经典日韩中文字幕综合网 | 精品亚洲一区二区在线播 | 成人av免费网址在线观看 | 91久久婷婷国产综合青草 | 国产高潮流白浆喷水在线观看 | 国产在线方视频在线观看 | 精品国产一区二区三区久久久久久 | 国模吧一区二区三区 | a级毛片高清免费 | 国产一区二区理论在线观看 | 国产精品丝袜久久久久久聚色 | www.夜片内射视频日韩精品成人 | 国产三级一区二区 | 91亚洲国产成人久久精品网站 | 国产精品超清无码一区二区 | 国产成人aa片在线观看 |