SQL Server LIKE与方括号直接工作,但不使用变量



我使用方括号来表示一个通配符范围。奇怪的是,在语句中直接使用表达式可以正常工作,获取预期的行。但是从变量中使用相同的表达式不会带来任何结果。为什么它不能从变量中工作?

:

SELECT * FROM dbo.Table WHERE Column LIKE '%B[A-Z][A-Z]%';
Results: BAA, BAB, BAC, ... until BZZ

’工作:

DECLARE @var VARCHAR(10)
SET @var = N'B[A-Z][A-Z]'
SELECT * FROM dbo.Table WHERE Column LIKE CONCAT('%', @var, '%');

我也尝试用+串联,但仍然得到零结果(像'%' + @var + '%')

当我在变量中只使用一个范围时,相同的表达式也可以工作,但我确实需要使用两个范围

SET @var = N'B[A-Z]'
SELECT * FROM dbo.Table WHERE Column LIKE '%' + @var + '%';
Results: BA, BB, BC, BD, ....

让变量变长,以便它可以存储整个模式。您可以看到PRINT @var变量的实际值,它将显示右方括号已被删除。

declare @var varchar(10) = 'B[A-Z][A-Z]'
print @var

相关内容

  • 没有找到相关文章

最新更新