共用方式為


LIKE (Entity SQL)

判斷特定字元 String 是否符合指定的模式。

語法

match [NOT] LIKE pattern [ESCAPE escape]

論點

match 評估為 的 StringEntity SQL 運算式。

pattern 要符合指定 String之的模式。

escape 逸出字元。

NOT 指定將 LIKE 的結果否定。

傳回值

true string如果符合模式,則為 ,否則為 false

備註

使用 LIKE 運算子的實體 SQL 運算式會以與使用相等做篩選準則的運算式相同的方式來進行評估。 不過,使用 LIKE 運算子的 Entity SQL 運算式可以同時包含常值和通配符。

下表描述模式 string的語法。

通配符 說明 範例
% 任何 string 零個或多個字元。 title like '%computer%' 會尋找標題中任何位置有單字 "computer" 的所有標題。
_ (底線) 任何單一字元。 firstname like '_ean' 會尋找結尾為 "ean的所有四個字母名字,「例如迪恩或肖恩。
[ ] 指定範圍中的任何單一字元([a-f]) 或 set ([abcdef])。 lastname like '[C-P]arsen' 會尋找以 「arsen」 結尾的姓氏,並以 C 與 P 之間的任何單一字元開頭,例如 Carsen 或 Larsen。
[^] 任何不在指定範圍([^a-f]) 或 set ([^abcdef] 中的單一字元)。 lastname like 'de[^l]%' 會尋找開頭為 「de」 且不包含 「l」 的所有姓氏,如下列字母所示。

備註

實體 SQL LIKE 運算子和 ESCAPE 子句無法套用至 System.DateTimeSystem.Guid 值。

LIKE 支援 ASCII 模式比對和 Unicode 模式比對。 當所有參數都是 ASCII 字元時,就會執行 ASCII 模式比對。 如果一或多個自變數為 Unicode,則會將所有自變數轉換成 Unicode,並執行 Unicode 模式比對。 當您搭配 LIKE 使用 Unicode 時,尾端空白很重要;不過,對於非 Unicode,尾端空白並不重要。 Entity SQL 的模式字串語法與 Transact-SQL 的語法相同。

模式中可以包含一般字元及萬用字元。 在模式比對期間,一般字元必須完全符合 字元 中指定的字元 string。 不過,萬用字元可以符合任意字元字串片段。 搭配通配符使用時,LIKE 運算符比 = 和 != 字串比較運算符更有彈性。

備註

如果您以特定提供者為目標,則可以使用提供者特定的擴充功能。 不過,例如,其他提供者可能會以不同的方式處理這類建構。 SqlServer 支援 [first-last] 和 [^first-last] 模式,其中前者只比對第一個和最後一個字符之間的一個字元,而後者與第一個和最後一個字符完全相符。

逃脫

藉由使用 ESCAPE 子句,您可以搜尋包含上一節表格中所述之一或多個特殊通配符的字元字串。 例如,假設有數份檔在標題中包含常值 「100%」,而您想要搜尋所有這些檔。 因為百分比 (%) 字元是通配符,所以您必須使用 Entity SQL ESCAPE 子句來逸出它,才能順利執行搜尋。 以下是此篩選條件的範例。

"title like '%100!%%' escape '!'"

在此搜尋表達式中,緊接在驚嘆號字元 (!) 後面的百分比通配符 (%), 會被視為常值,而不是通配符。 除了 Entity SQL 通配符和方括弧 ([ ]) 字元之外,您可以使用任何字元作為逸出字元。 在上述範例中,驚嘆號 (!) 字元是逸出字元。

範例

下列兩個 Entity SQL 查詢會使用 LIKE 和 ESCAPE 運算符來判斷特定字元字串是否符合指定的模式。 第一個查詢會搜尋 Name 開頭為 字元 Down_的 。 此查詢會使用ESCAPE選項,因為底線 (_) 是通配符。 若未指定ESCAPE選項,查詢會搜尋 Name 以單字 Down 開頭的任何值,後面接著底線字元以外的任何單一字元。 查詢是以 AdventureWorks 銷售模型為基礎。 若要編譯並執行此查詢,請遵循下列步驟:

  1. 遵循 如何:執行傳回 PrimitiveType 結果的查詢中的程式。

  2. 將下列查詢當做自變數傳遞至 ExecutePrimitiveTypeQuery 方法:

-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name 
-- with the value 'Down_Tube', the following query would find that 
-- value.
Select value P.Name FROM AdventureWorksEntities.Products AS P 
WHERE P.Name LIKE 'DownA_%' ESCAPE 'A'

-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products AS P 
WHERE P.Name LIKE 'BB%'

另請參閱