问题描述
我使用方括号来表示通配符的范围。 奇怪的是,直接在语句中使用表达式可以正常工作,获取预期的行。但是使用来自变量的相同表达式不会带来任何结果。 为什么它不能从变量工作?
作品:
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,'%');
我也尝试与 + 连接但仍然得到零结果(LIKE '%' + @var + '%')
当我在变量中只使用一个范围时,同样的表达式有效,但我确实需要使用两个范围
SET @var = N'B[A-Z]'
SELECT * FROM dbo.Table WHERE Column LIKE '%' + @var + '%';
Results: BA,BB,BC,BD,....
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)