Val*_*luk 5 sql sql-server csv
假设我在数据库中有一个列,其中包含以逗号分隔的 ID 列表(请不要问为什么 :( ),即像这样的列:
id | ids
----------
1 | 1,3,4
2 | 2
3 | 1,2,5
Run Code Online (Sandbox Code Playgroud)
以及 ids 相关的表:
id | thing
---------------
1 | fish
2 | elephant
3 | monkey
4 | mongoose
5 | kiwi
Run Code Online (Sandbox Code Playgroud)
如何根据第一个表中的 id 选择逗号分隔的事物列表?例如,选择 1 会给我,,'fish,monkey,mongoose'3 会给我'fish,elephant,kiwi'等等?
谢谢!
尝试这个
SELECT ID, things = STUFF(
(
SELECT ',' + t2.thing
FROM Table2 AS t2
INNER JOIN Table1 AS ti
ON ',' + ti.ids + ',' LIKE '%,' + CONVERT(VARCHAR(12), t2.id) + ',%'
WHERE ti.ID = tout.ID
FOR XML PATH, TYPE
).value('.[1]', 'nvarchar(max)'), 1, 1, '')
FROM Table1 AS tout
ORDER BY ID
Run Code Online (Sandbox Code Playgroud)