SQL - 子查询(列名称)

时间:2017-04-26 14:47:48

标签: sql sql-server

我需要一个select查询,它返回一些列的值。 我想要的专栏以' U_S'开头。

Select * from em

我需要转换上面的查询。 ' *'需要是结果(但用逗号):

select COLUMN_NAME from information_schema.columns 
where table_name='em' and column_name like 'u_s%'

4 个答案:

答案 0 :(得分:3)

有无数这样的例子,但据我所知,有时我们都需要一点启动。

Select Stuff((Select ',' +quotename(Column_Name) 
  From information_schema.columns 
  Where table_name='em' and column_name like 'u_s%'
  For XML Path ('')),1,1,'')

答案 1 :(得分:1)

您可以使用以下代码:

declare @col varchar(500)
select @col=Stuff((Select ',' +quotename(Column_Name) 
  From information_schema.columns 
  Where table_name='em' and column_name like 'u_s%'
  For XML Path ('')),1,1,'')
exec('select '+@col
  +' from em')

答案 2 :(得分:0)

select CAST(
    (select COLUMN_NAME + ',' 
    from information_schema.columns 
    where table_name='em' and column_name like 'u_s%'
    for xml path('')
    ) as nvarchar(max)
)  

你必须删除最后一个逗号...

答案 3 :(得分:0)

您还可以直接在变量中选择列名,然后可以将其用于动态SQL。

spring stop

@Cols最初为null,null +','给出null 所以结果不会以逗号开头。

只是添加了引号功能作为安全措施 以防列名有时在名称中包含空格。