日期:2014-05-17  浏览次数:20512 次

自定义字符串变量赋值后,如何在查询语句中使用?
自定义字符串变量赋值后,如何在查询语句中使用?

比如:

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 +''')')