自定义字符串变量赋值后,如何在查询语句中使用?
自定义字符串变量赋值后,如何在查询语句中使用?
比如:
DECLARE @isforbid VARCHAR(1000)
SET @isforbid = 'XXXXXX'
SELECT * FROM tableA WHERE cName IN (@isforbid)
这样子的查询结果是空的
SELECT * FROM tableA WHERE cName IN ('XXXXXX')
这样子的查询结果是有结果的。为什么字符串变量不能直接用在查询语句里呢?
假如要用的话,应该如何使用?
------解决方案--------------------DECLARE @isforbid VARCHAR(1000)
SET @isforbid = 'XXXXXX'
exec('SELECT * FROM tableA WHERE cName IN ('+ @isforbid+')')
------解决方案--------------------
DECLARE @isforbid VARCHAR(1000),@tsql varchar(6000)
SET @isforbid = 'XXXXXX'
select @tsql='SELECT * FROM tableA WHERE cName IN ('+@isforbid+')'
exec(@tsql)
------解决方案--------------------你的语句有问题,你忘了单引号
DECLARE @isforbid VARCHAR(1000)
SET @isforbid = 'XXXXXX'
DECLARE @SQL=VARCHAR(MAX)
SET @SQL=N'SELECT * FROM tableA WHERE cName IN ('''+@isforbid+''')'
PRINT @SQL
EXEC (@SQL)
这样就行了,
不信你可以试试
------解决方案--------------------
DECLARE @isforbid VARCHAR(1000)
SET @isforbid = 'a'
exec ('SELECT * FROM c WHERE Name in ('''+ @isforbid +''')')