忽略 MSSQL 变量中的通配符?
Ignore wildcard in MSSQL Variable?
我有一个包含两个参数的存储过程。前缀 varchar(50) 和后缀 varchar(50)。存储过程使用 where 子句选择一些行。现在的问题是,如果变量中有通配符,我就会出错。我如何忽略也可能是通配符的可变字符?
示例:
假设我有两行:
1。我的列:'ABCTTAX'
2.我的列:'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
在上面的示例中,两行都将匹配。但我只想匹配第二个。
通过用方括号替换下划线文字来转义它。
Select * from myTable where @Suffix IS NOT NULL AND myColumn
like REPLACE(@Prefix, '_', '[_]') + '__' + REPLACE(@Suffix, '_', '[_]')
此补丁将不允许前缀和后缀输入通配符下划线。
实际上你可以这样做,
尝试
Select * from myTable where @Suffix IS NOT NULL AND myColumn like @Prefix + '%\' + @Suffix escape '\'
我有一个包含两个参数的存储过程。前缀 varchar(50) 和后缀 varchar(50)。存储过程使用 where 子句选择一些行。现在的问题是,如果变量中有通配符,我就会出错。我如何忽略也可能是通配符的可变字符?
示例:
假设我有两行:
1。我的列:'ABCTTAX'
2.我的列:'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
在上面的示例中,两行都将匹配。但我只想匹配第二个。
通过用方括号替换下划线文字来转义它。
Select * from myTable where @Suffix IS NOT NULL AND myColumn
like REPLACE(@Prefix, '_', '[_]') + '__' + REPLACE(@Suffix, '_', '[_]')
此补丁将不允许前缀和后缀输入通配符下划线。
实际上你可以这样做, 尝试
Select * from myTable where @Suffix IS NOT NULL AND myColumn like @Prefix + '%\' + @Suffix escape '\'