gpt4 book ai didi

sql-server - 在 SQL Server 中获取逗号分隔字段的值

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:58 25 4
gpt4 key购买 nike

我有逗号分隔的列,代表城市的 ID,例如:

ID | Name
1 | 1,2,3
2 | 2,3,4

我想进行查询以获取此值字段的名称。 City 表有两列:id 和 name of cities

预期输出

ID | VALUES    
1 | mumbai,delhi,pune
2 | delhi,pune,chennai

如果一列中只有一个 id,我可以进行查询,例如:

select data.id,city.name from data,city where data.values=city.cityid

但如果一个字段中有多个逗号分隔值,我不知道如何检索数据。

最佳答案

最简单的方法是将 CSV 值转换为每个 Id 的行,将其与 CITY 表连接并转换回 CSV 值。我已经在查询中编写了逻辑。

;WITH CTE1 AS
(
-- Convert CSV to rows
SELECT Id,LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) 'NAME'
FROM
(
-- To change ',' to any other delimeter, just change ',' before '</M><M>' to your desired one
SELECT Id,CAST ('<M>' + REPLACE(Name, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM #TEMP
) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
)
,CTE2 AS
(
-- Now join the values in rows with Id in CITY table
SELECT T.ID,T.NAME,C.CITYNAME
FROM CTE1 T
JOIN #CITY C ON T.NAME=C.ID
)
-- Now convert back to CSV format
SELECT DISTINCT ID,
SUBSTRING(
(SELECT ', ' + CITYNAME
FROM CTE2 I
WHERE I.Id=O.Id
FOR XML PATH('')),2,200000) [VALUES]
FROM CTE2 O

关于sql-server - 在 SQL Server 中获取逗号分隔字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907472/

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