gpt4 book ai didi

sql-server - 在 SQL 中拆分和连接值

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

我有两个不同的表,如下所示,并且对 sql 查询有特定要求。

Table1:
Name RuleNumber
Tom 1,2
Pete 1,3

Table2:
RuleNumber Description
1 Rule1
2 Rule2
3 Rule3

如何获得如下所示的 sql 查询结果
Name    Description
Tom Rule1, Rule2
Pete Rule1, Rule3

最佳答案

您首先需要一个自定义拆分函数来分隔分隔列表,然后使用 FOR XML PATH结合描述。这是您的最终查询

select  t1.Name,
STUFF(( SELECT ',' + Description
FROM table2 AS t2
WHERE t2.ruleNumber in (select s from dbo.fn_split(t1.RuleNumber, ','))
ORDER BY ruleNumber
FOR XML PATH('')), 1, 1, '') as 'Description'
from table1 t1

这是 split 函数的代码。
create function [dbo].[fn_Split]
(
@String varchar(8000) ,
@Delimiter varchar(10)
)
returns @tbl table (s varchar(1000))
as

begin
declare @i int ,
@j int
select @i = 1
while @i <= len(@String)
begin
select @j = charindex(@Delimiter, @String, @i)
if @j = 0
begin
select @j = len(@String) + 1
end
insert @tbl select substring(@String, @i, @j - @i)
select @i = @j + len(@Delimiter)
end
return
end

关于sql-server - 在 SQL 中拆分和连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649525/

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