Sql server 如何将sql变量传递给类似sql Server 2012的条件
我正在创建动态sql查询并将变量传递给like语句 这是我的密码Sql server 如何将sql变量传递给类似sql Server 2012的条件,sql-server,tsql,variables,Sql Server,Tsql,Variables,我正在创建动态sql查询并将变量传递给like语句 这是我的密码 DECLARE @DBname1 VARCHAR(200),@query VARCHAR(200),@tname VARCHAR(200); SET @DBname1='core' SET @tname = 'abc' SET @tname ='''+ '%' + @tname +'''+ '%' PRINT @tname SET @query= 'Select * FROM '+@DBname1+ '.infor
DECLARE @DBname1 VARCHAR(200),@query VARCHAR(200),@tname VARCHAR(200);
SET @DBname1='core'
SET @tname = 'abc'
SET @tname ='''+ '%' + @tname +'''+ '%'
PRINT @tname
SET @query= 'Select * FROM '+@DBname1+ '.information_schema.tables where TABLE_NAME like '+ @tname
PRINT @DBname1
PRINT @query
EXEC (@query)
问题是我无法将单引号传递给类似的变量,上面的代码显示错误消息
在模运算符中,数据类型varchar和varchar不兼容
如果我将代码更改为
SET @tname ='%' + @tname + '%'
然后从变量中删除单引号,并成为表\u名称,如%test%
,由于缺少单引号,因此不会执行
因此,我想知道如何在将sql变量传递到类似条件之前向其添加单引号,或者如何将其连接起来。您应该这样做
DECLARE @DBname1 VARCHAR(200),@query VARCHAR(200),@tname VARCHAR(200);
SET @DBname1='core'
SET @tname = 'abc'
PRINT @tname
SET @query= 'Select * FROM '+@DBname1+ '.information_schema.tables where TABLE_NAME like ''%'+ @tname + '%'''
PRINT @DBname1
PRINT @query
EXEC (@query)
您也可以像这样使用
CONCAT
:
SET @query= CONCAT('Select * FROM ',
@DBname1,
'.information_schema.tables where TABLE_NAME like ',
'''%', @tname, '%''')
谢谢,它对我有用,我正在搜索过去两天的这个。。再次感谢。很高兴:)