我有一个包含两个参数的存储过程。前缀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
在上面的示例中,两个行都匹配。但我只希望第二个匹配。
答案 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 '\'