忽略MSSQL变量中的通配符?

时间:2018-06-15 08:52:54

标签: sql sql-server wildcard

我有一个包含两个参数的存储过程。前缀varchar(50)和后缀varchar(50)。存储过程选择具有where clausle的某些行。问题是现在,如果变量中有通配符,我就会出错。如何忽略也可能是通配符的变量字符?

示例:

假设我有两行:

1。 myColumn:'ABCTTAX'
   2. myColumn:'ABCTT_X'

declare @Prefix varchar(50)
declare @Suffix varchar(50)

set @Prefix = 'ABC';
set @Suffix = '_X';

Select * from myTable where @Suffix IS NOT NULL AND myColumn like @Prefix + '__' + @Suffix

在上面的示例中,两个行都匹配。但我只希望第二个匹配。

2 个答案:

答案 0 :(得分:2)

用括号替换下划线文字。

Select * from myTable where @Suffix IS NOT NULL AND myColumn 
    like REPLACE(@Prefix, '_', '[_]') + '__' + REPLACE(@Suffix, '_', '[_]')

此补丁不允许使用前缀和后缀输入通配符下划线。

答案 1 :(得分:0)

其实你可以这样做, 尝试

Select * from myTable where @Suffix IS NOT NULL AND myColumn like @Prefix + '%\' + @Suffix escape '\'