首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XML类型返回文本转换为选择列

如何将XML类型返回文本转换为选择列
EN

Stack Overflow用户
提问于 2021-09-05 14:49:47
回答 1查看 120关注 0票数 0

我试图使用XML数据类型和information_schema列获取表的列名。当我试图在另一个select语句中使用结果时,我使用的结果是重复的列名,而不是结果集。我甚至试着把它投给varchar,但还是失败了。做错了什么?

代码语言:javascript
复制
DECLARE @TSQL1 varchar(1000);

SELECT @TSQL1 = CAST((SELECT SUBSTRING((SELECT ', ' + QUOTENAME(COLUMN_NAME) 
                      FROM [ProdLS].[ information_schema.columns] 
                      WHERE table_name = 'roles' 
                      ORDER BY ORDINAL_POSITION 
                      FOR XML PATH('')), 3, 200000)) AS varchar(max));

 SELECT @TSQL1 
 FROM [aubeakon_scrm4].[acl_roles]

检索的列名从roles表获取结果的查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-05 15:50:35

您不能像这样执行动态SQL。您需要使用sp_executesql。您还需要将动态SQL声明为nvarchar(max)

您还应该使用.value解除XML。

代码语言:javascript
复制
DECLARE @TSQL1 nvarchar(max) = N'
SELECT 
' + STUFF((
    SELECT ', ' + QUOTENAME(COLUMN_NAME) 
    FROM [ProdLS].[information_schema].columns
    WHERE table_name = 'roles' 
    ORDER BY ORDINAL_POSITION 
    FOR XML PATH(''), TYPE
).value('text()[1]', 'nvarchar(max)'), 1, LEN(', '), '') + '
FROM [aubeakon_scrm4].[acl_roles];
';

EXEC sp_executesql @TSQL1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69064457

复制
相关文章

相似问题

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