自定义字符串变量赋值后,如何在查询语句中使用?比如:DECLARE @isforbid VARCHAR(1000)
SET @isforbid = 'XXXXXX'
SELECT * FROM tableA WHERE cName IN (@isforbid)这样子的查询结果是空的SELECT * FROM tableA WHERE cName IN ('XXXXXX')这样子的查询结果是有结果的。为什么字符串变量不能直接用在查询语句里呢?假如要用的话,应该如何使用?

解决方案 »

  1.   

    DECLARE @isforbid VARCHAR(1000)
    SET @isforbid = 'XXXXXX'
    exec('SELECT * FROM tableA WHERE cName IN ('+ @isforbid+')')
      

  2.   


    DECLARE @isforbid VARCHAR(1000),@tsql varchar(6000)
    SET @isforbid = 'XXXXXX'select @tsql='SELECT * FROM tableA WHERE cName IN ('+@isforbid+')'exec(@tsql)
      

  3.   

    你的语句有问题,你忘了单引号
    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)
    这样就行了,
    不信你可以试试
      

  4.   


    DECLARE @isforbid VARCHAR(1000)
    SET @isforbid = 'a'
    exec ('SELECT * FROM c WHERE Name in ('''+ @isforbid +''')')