gpt4 book ai didi

sql - 使用 SQL Server 将一列中的字符串中的多个值拆分为多列

转载 作者:行者123 更新时间:2023-12-05 08:36:26 25 4
gpt4 key购买 nike

我在 SQL Server 中有一个表,它输出以下内容:

<表类="s-表"><头>公司名称公司编号标签<正文>第一比较有限公司1信贷经纪人;有限许可贷款人;保险中介商务网456投资顾问;仅限信用经纪Charity.org156789不以盈利为目的

我想拆分标签列中的值,以便每列只有一个标签,所以:

<表类="s-表"><头>公司名称公司编号标签1标签2标签3<正文>第一比较有限公司1信用经纪人有限许可贷款人保险中介商务网456投资顾问仅限信用经纪Charity.org156789不以盈利为目的

我可以在 excel 中使用分号作为分隔符手动执行此操作,然后调整标题,但这可以在 SQL server 中完成吗?最后,我想要 SQL Server 中的一个 View 来格式化数据,这样我就可以让 powershell 脚本生成一个 csv 并通过电子邮件发送。

我已经尝试了以下方法,我想我可能快到了,只是在 View 中不起作用:

with TagsDelimited_CTE AS
(select CompanyName, CompanyNumber, Value,
ROW_NUMBER() over(partition by CompanyName, CompanyNumber order by CompanyName, CompanyNumber) as RowNum
from Source
CROSS APPLY
string_split(Tags,';')
)
select CompanyName, CompanyNumber,
[1] as Tag1,
[2] as Tag2,
[3] as Tag3
From TagsDelimited_CTE
PIVOT
(MAX(value)
For RowNum in ([1],[2],[3])) as PVT

任何帮助都会有很大帮助,谢谢。

最佳答案

使用一些 JSON 并假设您有已知或最大数量的标签

Select A.CompanyName
,A.CompanyNumber
,Tag1 = JSON_VALUE(S,'$[0]')
,Tag2 = JSON_VALUE(S,'$[1]')
,Tag3 = JSON_VALUE(S,'$[2]')
From YourTable A
Cross Apply ( values ( '["'+replace(STRING_ESCAPE(Tags,'json'),';','","')+'"]' ) ) B(S)

关于sql - 使用 SQL Server 将一列中的字符串中的多个值拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69133293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com