Sql server 如何使用LIKE运算符搜索包含方括号和特定字符数的字符串

Sql server 如何使用LIKE运算符搜索包含方括号和特定字符数的字符串,sql-server,sql-server-2008-r2,sql-like,Sql Server,Sql Server 2008 R2,Sql Like,我想告诉SQLServer2008R2中的SELECT查询中的like运算符搜索包含以下字符串的字符串 [can] [eur] [usd] 基本上 SELECT DESCRIPTION FROM TABLE WHERE DESCRIPTION contains two square brakets and there are three chars in the square brackets 不知怎的,这些结果会被返回 Freddie Young [FRY] Micheal Nor

我想告诉SQLServer2008R2中的SELECT查询中的like运算符搜索包含以下字符串的字符串

[can]
[eur]
[usd]
基本上

SELECT DESCRIPTION
FROM TABLE
WHERE 
  DESCRIPTION contains two square brakets and there are three chars in the square brackets
不知怎的,这些结果会被返回

Freddie Young [FRY] 
Micheal Norton [MIN]
但那些不是

Laura Cunningham [LC]
Marc Lizard (MAL)

我认为带有CLR的正则表达式是一个选项,但我想用一个简单的查询来说明这一点。

给你。注意使用转义子句转义[和]字符

WITH cte(value)
as
(
 SELECT 'Freddie Young [FRY]' 
  Union
 SELECT 'Micheal Norton [MIN]'
  Union
 SELECT 'Laura Cunningham [LC]'
  Union
 SELECT 'Marc Lizard (MAL)')
 Select * 
   FROM cte
  Where value like '%![[A-Z][A-Z][A-Z]!]%' escape '!'
下面是一个没有转义的版本。要找到开口方括号,需要将其括在方括号中。要查找结束方括号,只需使用字符。不需要封装

WITH cte(value)
AS
(
 SELECT 'Freddie Young [FRY]' 
  UNION
 SELECT 'Micheal Norton [MIN]'
  UNION
 SELECT 'Laura Cunningham [LC]'
  UNION
 SELECT 'Marc Lizard (MAL)'
 )
 SELECT * 
 FROM cte
 WHERE value like '%[[][A-Z][A-Z][A-Z]]%' 

非常感谢。非常清晰和有用。我将使用带有escape的,因为它对我来说更可读