如何将选择中的所有列与 SQL Server 连接起来 [英] How to concatenate all columns in a select with SQL Server

查看:35
本文介绍了如何将选择中的所有列与 SQL Server 连接起来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要我的选择有这样的模式:

I need my select to have a pattern like this:

 SELECT '<text> ' + tbl.* + ' </text>' FROM table tbl;

理想的解决方案是将所有列以逗号分隔,以便获得该输出:

The ideal solution would have all the columns separated by a comma in order to have that output:

具有两列的表 1 的 SQL 结果:

SQL result for Table 1 with two columns:

'<text>col1, col2</text>'

表 2 三列的 SQL 结果:

SQL result for Table 2 with three columns:

'<text>col1, col2, col3</text>' 

我尝试像这样使用 CONCAT(...) 函数:

I tried to use the CONCAT(...) function like this:

SELECT CONCAT('<text>', tbl.*, '</text>')
FROM table2 tbl

但我明白它不是那么简单,因为列数是可变的.

But I understand it is not so simple because the variable number of columns.

是否有任何简单的解决方案来解决这个问题?

Is there any simple solution to address that problem?

我使用的是 SQL Server 2008 R2.

I am using SQL Server 2008 R2.

推荐答案

给定表名的任意数量的列;如果你需要用

DECLARE @s VARCHAR(500)

SELECT @s =  ISNULL(@s+', ','') + c.name   
FROM  sys.all_columns c join sys.tables  t 
            ON  c.object_id = t.object_id
WHERE t.name = 'YourTableName'

SELECT '<text>' + @s + '</text>'

SQL Fiddle 示例在这里

-- RESULTS 
<text>col1, col2, col3,...</text>

如果您需要使用 选择查询结果集包裹然后;

If you need select query result set wrapped with <text> then;

SELECT @S =  ISNULL( @S+ ')' +'+'',''+ ','') + 'convert(varchar(50), ' + c.name    FROM 
       sys.all_columns c join sys.tables  t 
       ON  c.object_id = t.object_id
WHERE t.name = 'YourTableName'


EXEC( 'SELECT ''<text>''+' + @s + ')+' + '''</text>'' FROM YourTableName')

SQL Fiddle 示例在这里

--RESULTS
<text>c1r1,c2r1,c3r1,...</text>
<text>c1r2,c2r2,c3r2,...</text>
<text>c1r3,c2r3,c3r3,...</text>

这篇关于如何将选择中的所有列与 SQL Server 连接起来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆