如何将变量传递给LIKE通配符

时间:2013-08-18 13:55:10

标签: sql

我正在尝试通过从DOMDB获取列表来从APPDB中删除临时表名。 我无法找到或弄清楚SQL中的语法应该如何。

这是两种代码的组合,它们分别起作用,但我想把两者结合起来进行迭代。

USE DOMDB
Declare @OPR_CODE char( 11 )
SET rowcount 0
SELECT OPR_CODE into #TEMPOPR from DOMN_OPR
SET rowcount 1
SELECT @OPR_CODE = OPR_CODE from #TEMPOPR

USE APPDB
DECLARE @OPRCODE NVARCHAR(MAX) = N'';

SELECT @OPRCODE += '
DROP TABLE ' 
   + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
   + '.' + QUOTENAME(name) + ';'
FROM sys.tables 
WHERE name LIKE '% + OPR_CODE + 001%';
--something like if OPR_CODE='USER' it will be (WHERE name LIKE '%USER001%';

EXEC sp_executesql @OPRCODE;

while @@rowcount <> 0
begin
set rowcount 0
select * from #TEMPOPR where OPR_CODE = @OPR_CODE
delete #TEMPOPR where OPR_CODE = @OPR_CODE

set rowcount 1
select @OPR_CODE = OPR_CODE from #TEMPOPR
end
set rowcount 0
DROP table #TEMPOPR

2 个答案:

答案 0 :(得分:1)

您需要使用正确的连接:

WHERE name LIKE '%' + @OPR_CODE + '001%'

答案 1 :(得分:0)

这样吗? LIKE '% +&'+@OPR_CODE+'&+001%';