确定特定字符 String 是否与指定的模式匹配。
语法
match [NOT] LIKE pattern [ESCAPE escape]
论据
pattern 要与指定 String匹配的模式。
escape 转义字符。
NOT 指定将 LIKE 的结果求反。
返回值
true 如果模式匹配,则为 string ;否则为 false。
注解
使用 LIKE 运算符的实体 SQL 表达式的计算方式与使用相等性作为筛选条件的表达式大致相同。 但是,使用 LIKE 运算符的实体 SQL 表达式可以同时包含文本和通配符。
下表描述了模式 string的语法。
| 通配符 | DESCRIPTION | 示例: |
|---|---|---|
| % | 任何 string 零个或多个字符。 |
title like '%computer%' 查找标题中任意位置包含单词 "computer" 的所有标题。 |
| _(下划线) | 任何单个字符。 |
firstname like '_ean' 查找以结尾 "ean的所有四字母名字,“如迪恩或西恩。 |
| 【 】 | 指定范围([a-f])或集([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.DateTime 或 System.Guid 值。
LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。 当所有参数都是 ASCII 字符时,将执行 ASCII 模式匹配。 如果一个或多个参数为 Unicode,则会将所有参数转换为 Unicode,并执行 Unicode 模式匹配。 将 Unicode 与 LIKE 配合使用时,尾随空白非常重要;但是,对于非 Unicode,尾随空白并不重要。 Entity SQL 的模式字符串语法与 Transact-SQL 的模式字符串语法相同。
模式可以包含常规字符和通配符。 在模式匹配期间,常规字符必须与字符 string中指定的字符完全匹配。 但是,通配符可以与字符串的任意部分相匹配。 当它与通配符一起使用时,LIKE 运算符比 = 和 != 字符串比较运算符更灵活。
注释
如果面向特定提供程序,则可以使用特定于提供程序的扩展。 但是,例如,其他提供程序可能会以不同的方式对待此类构造。 SqlServer 支持 [first-last] 和 [^first-last] 模式,其中前者只匹配第一个和最后一个字符之间的一个字符,而后一个字符正好匹配第一个和最后一个字符。
逃跑
通过使用 ESCAPE 子句,可以搜索包含上一部分中表中所述的一个或多个特殊通配符的字符串。 例如,假设多个文档在标题中包含文本“100%”,并且你想要搜索所有这些文档。 由于百分比(%)字符是通配符,因此必须使用 Entity SQL ESCAPE 子句对其进行转义才能成功执行搜索。 下面是此筛选器的示例。
"title like '%100!%%' escape '!'"
在此搜索表达式中,紧跟感叹号字符(!)的百分比通配符(%)被视为文本,而不是通配符。 可以将任何字符用作转义字符,但实体 SQL 通配符和方括号 ([ ]) 字符除外。 在前面的示例中,感叹号 (!) 字符是转义字符。
示例:
以下两个实体 SQL 查询使用 LIKE 和 ESCAPE 运算符来确定特定字符串是否与指定的模式匹配。 第一个查询搜索 Name 以字符 Down_开头的查询。 此查询使用 ESCAPE 选项,因为下划线 (_) 是通配符。 如果不指定 ESCAPE 选项,查询将搜索以单词Down开头的任何Name值,后跟下划线字符以外的任何单个字符。 查询基于 AdventureWorks 销售模型。 若要编译并运行此查询,请执行以下步骤:
按照作方法中的过程作 :执行返回 PrimitiveType 结果的查询。
将以下查询作为参数传递给
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%'