DECLARE
    @s varchar(8000)
SELECT
    @s = ''
    
SELECT
    @s = @s + '    union select  ' + RTRIM(id)
FROM a   +'xxx'--如何加上这个xxx?
SELECT
    @s = STUFF(@s, 1, LEN(' union all '), '')
PRINT @s
上面报错
'xxx'--如何加上这个xxx?

解决方案 »

  1.   

    不清楚你指往哪加SELECT 
        @s = @s + '    union select  ' + RTRIM(id) + 'xxx'
    FROM a--还是
    SELECT 
        @s = @s + '    union select  ' + RTRIM(id) 
    FROM a
    SET @s=@s+'xxxx'
      

  2.   

    动态sql语句基本语法 
    1 :普通SQL语句可以用Exec执行 eg:   Select * from tableName 
             Exec('select * from tableName') 
             Exec sp_executesql N'select * from tableName'    -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:   
    declare @fname varchar(20) 
    set @fname = 'FiledName' 
    Select @fname from tableName              -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 
    Exec('select ' + @fname + ' from tableName')     -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 
    declare @fname varchar(20) 
    set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功 
    exec sp_executesql @s   -- 此句会报错 declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功     
    exec sp_executesql @s   -- 此句正确 3. 输出参数 
    declare @num int, 
            @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) 
    --如何将exec执行结果放入变量中? declare @num int, 
                   @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int output',@num output 
    select @num 
      

  3.   

    SQL code动态sql语句基本语法 
    1 :普通SQL语句可以用Exec执行 eg:   Select * from tableName 
             Exec('select * from tableName') 
             Exec sp_executesql N'select * from tableName'    -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:   
    declare @fname varchar(20) 
    set @fname = 'FiledName' 
    Select @fname from tableName              -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 
    Exec('select ' + @fname + ' from tableName')     -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 
    declare @fname varchar(20) 
    set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功 
    exec sp_executesql @s   -- 此句会报错 declare @s Nvarchar(1000)  -- 注意此处改为nvarchar(1000) 
    set @s = 'select ' + @fname + ' from tableName' 
    Exec(@s)                -- 成功     
    exec sp_executesql @s   -- 此句正确 3. 输出参数 
    declare @num int, 
            @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) 
    --如何将exec执行结果放入变量中? declare @num int, 
                   @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int output',@num output 
    select @num 
      

  4.   

    union select  ' + RTRIM(id) 
    FROM a
    我要每一句后面都有'xxx'
    而不是'xxx放在最后
      

  5.   

    SELECT 
        @s = @s + '    union select  ' + RTRIM(id) 
    FROM a
    SET @s=@s+'xxxx'
    的结果是只有一个'xxxx'
    放在最后.
    我要每个@s = @s + '    union select  ' + RTRIM(id) 
    FROM a
    后面都有一个'xxxx'
    如何改?
      

  6.   

    SELECT 
        @s = @s + '    union select  ' + RTRIM(id) 
    FROM a + 'XXXX '
      

  7.   

    灵龟转世这样写法,会报错
    print @s
    '+' 附近有语法错误。
      

  8.   

    + 'XXXX  加在 FROM a 前面不错.
    但是我要每个@s = @s + '    union select  ' + RTRIM(id) 
    FROM a 
    后面都有一个'xxxx' 
      

  9.   

    SELECT 
        @s = @s + '    union select  ' + RTRIM(id) + 'xxx'
    FROM a
    ?
      

  10.   

    你这个还是加在 a 前面.我要加在FROM a 后面可不可以?
      

  11.   

    Exec('select * from a' + 'XXXX ' ) 
      

  12.   

    create table a
    (id int )
    insert into a
    select 1 
    select * from aDECLARE
        @s varchar(8000)
    SELECT
        @s = ''
        
    SELECT 
        @s = @s + '    union select  ' + RTRIM(id)  FROM a  + ' where id =1'
    SELECT
        @s = STUFF(@s, 1, LEN(' union all '), '') 
    --print @s
    exec (@s)上面+ ' where id =1'
    就会报错.如何修改?
      

  13.   


    DECLARE
        @s varchar(8000)
    SELECT
        @s = ''
        
    SELECT 
        @s = @s + '    union select  ' + RTRIM(id)  FROM a  
    SELECT
        @s = STUFF(@s, 1, LEN(' union all '), '') 
    --print @s
    exec (@s)
    去掉 from a 后面的就对了
    我现在有个查询需要在 from a 后面加
    不知可否?