declare @ListId nvarchar(255)
SET @ListId='SELECT id FROM [table] WHERE id>10
SELECT *
  FROM table  where [id] not in (@ListId)我这样子写不行!
提示
在将 nvarchar 值 'SELECT id FROM [table] WHERE id>10' 转换成数据类型 int 时失败。
请问要怎么写,因为我要很多个地方用到 SELECT id FROM [table] WHERE id>10所以想提取出来

解决方案 »

  1.   

    declare @ListId nvarchar(255)
    SET    @ListId='SELECT id FROM [table] WHERE id>10
    SELECT *
      FROM table  where [id] not in ('+@ListId+')'
      

  2.   

    declare @ListId nvarchar(255)
    SET    @ListId='SELECT id FROM [table] WHERE id>10'EXEC('
    SELECT *
      FROM table  where [id] not in ('+@ListId+')')
      

  3.   

    declare @ListId nvarchar(255)
    set @ListId = N''
    SET    @ListId=  SELECT @ListId = @ListId + ',' + convert(nvarchar(10), id) FROM [table] WHERE fenshu>10declare @sql nvarchar(1000)set @sql = N'SELECT *
      FROM table  where [id] not in (' + @ListId + ')'
    print @sql
      

  4.   

    EXEC('
    SELECT *
      FROM table  where [id] not in ('+ltrim(@ListId)+')')
      

  5.   


    declare @ListId varchar(255)
    SELECT @ListId=isnull(@ListId+',','')+id FROM [table] WHERE id>10
    exec('SELECT * FROM table where id not in ('''+@ListId+''')')--或者直接
    select * FROM [table] WHERE id<=10
      

  6.   


    --id是int型的话改下
    declare @ListId varchar(255)
    SELECT @ListId=isnull(@ListId+',','')+id FROM [table] WHERE id>10
    exec('SELECT * FROM table where id not in ('+@ListId+')')
      

  7.   


    declare @ListId nvarchar(255)
    SET    @ListId='SELECT id FROM [table] WHERE id>10
    --动态执行语句用exec
    exec('SELECT * FROM table  where [id] not in ('+@ListId+')')
      

  8.   

    ,学习
    神马动态sql最讨厌了...
      

  9.   

    在将 nvarchar 值 'SELECT id FROM [table] WHERE id>10' 转换成数据类型 int 时失败。
    你的id是不是有的不能隐式转换成数值型数据
      

  10.   

    id > CAST(10 AS VARCHAR(10))
      

  11.   


    declare @ListId nvarchar(255)
    SET    @ListId='SELECT id FROM [table] WHERE id>10'Exec ('
    SELECT *
      FROM table  where [id] not in ('+@ListId+')
    ')