使用 TSQL 将逗号分隔的字符串表行拆分为单独的行 [英] Split comma separated string table row into separate rows using TSQL

查看:47
本文介绍了使用 TSQL 将逗号分隔的字符串表行拆分为单独的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个返回以下内容的查询

Say I have a query that returns the following

ID       SomeValue
1        a,b,c,d
2        e,f,g

我想返回如下:

ID       SomeValue
1        a
1        b
1        c
1        d
2        e
2        f
2        g

我已经有一个 UDF 调用 Split,它将接受一个字符串和一个分隔符,并将其作为一个表返回,其中包含一个名为 [Value] 的列.鉴于此,SQL 应该如何实现这一点?

I already have a UDF calls Split that will accept a string and a delimter and return it as a table with a single column called [Value]. Given this, How shoudl the SQL look to achieve this?

推荐答案

或者,您可以像这样使用 XML:

Alternatively, you could use XML like so:

DECLARE @yourTable TABLE(ID INT,SomeValue VARCHAR(25));

INSERT INTO @yourTable
VALUES  (1,'a,b,c,d'),
        (2,'e,f,g');

WITH CTE
AS
(
    SELECT  ID,
            [xml_val] = CAST('<t>' + REPLACE(SomeValue,',','</t><t>') + '</t>' AS XML)
    FROM @yourTable
)

SELECT  ID,
        [SomeValue] = col.value('.','VARCHAR(100)')
FROM CTE
CROSS APPLY [xml_val].nodes('/t') CA(col)

这篇关于使用 TSQL 将逗号分隔的字符串表行拆分为单独的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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