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

How to search for strings containing square brackets and a specific number of chars with the LIKE operator

我想在 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 是一个选项,但我想用一个简单的查询来执行此操作。

给你。请注意使用 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