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

时间:2018-06-26 09:51:11

标签: sql-server sql-server-2008-r2 sql-like

我想在SQL Server2008R2的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)

我想可以使用RegEx和CLR,但是我想通过一个简单的查询来执行此操作。

1 个答案:

答案 0 :(得分:3)

您在这里。请注意使用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 '!'

下面是一个没有转义的版本。要找到方括号,您需要将其括在方括号中。要找到右方括号,只需使用字符。无需封闭。

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]]%' 

MSDN Reference