首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL:将行中所有字段的值合并为一个字符串

TSQL:将行中所有字段的值合并为一个字符串
EN

Stack Overflow用户
提问于 2011-08-22 17:33:21
回答 3查看 1.1K关注 0票数 3

我需要将单行的所有值放入一个字符串中,例如

表:

代码语言:javascript
运行
复制
CustomerName  Address Zip
Alex          Moscow  1234

结果是:

代码语言:javascript
运行
复制
CustomerName: Alex
Address: Moscow
Zip: 1234

重要提示-我不知道字段名称/类型,所以它应该遍历所有字段,所有非空值都添加到列表中。

看起来它可以使用xquery做到这一点,但是找不到正确的语法。有什么提示吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-22 19:12:15

代码语言:javascript
运行
复制
select T2.N.value('local-name(.)', 'nvarchar(128)')+': '+
       T2.N.value('.', 'nvarchar(max)')
from (select *
      from YourTable
      for xml path(''), type) as T1(X)
  cross apply T1.X.nodes('/*') as T2(N)
票数 4
EN

Stack Overflow用户

发布于 2011-08-22 17:39:37

代码语言:javascript
运行
复制
select 'CustomerName: ' + isNull(CustometName, '') + 'Address: ' 
+ isNull(Address, ''), + 'Zip:' + isNull(Zip, '') from [TableName]

也许您需要将一些值转换为varchar

票数 1
EN

Stack Overflow用户

发布于 2011-08-22 17:43:54

不像Mikael的解决方案那么优雅。但我还是想把它包括进来。

代码语言:javascript
运行
复制
DECLARE @yourtable nvarchar(128)
DECLARE @sql as nvarchar(2100)
DECLARE @col as nvarchar(2000)

SET @yourtable = '<tablename>'

SELECT @col = coalesce(@col, '' ) + '+'''+t2.column_name+': '' + cast([' + t2.column_name + '] as varchar) + char(32)'
FROM INFORMATION_SCHEMA.TABLES t1 join 
INFORMATION_SCHEMA.COLUMNS t2 on t1.table_name = t2.table_name
where t2.is_nullable = 'NO' and t1.table_name = @yourtable
and t1.table_type = 'BASE TABLE' and t1.table_schema = t2.table_schema
and t2.table_schema = 'dbo'
SET  @sql = 'select ' + stuff(@col, 1,1,'') +' from ' + @yourtable
EXEC (@sql)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7145485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档