gpt4 book ai didi

mysql - SQL:从列表中提取项目并将其放入新行

转载 作者:行者123 更新时间:2023-11-30 01:02:37 25 4
gpt4 key购买 nike

有没有办法提取列中的列表项并将每个项目放在自己的行中?我也想取消列表括号 [] !有人可以帮忙吗?

输入:

name    doc_id                              type
JD [409839589143224] 1843
JD [470573363064028,239564999464566] 778
BK [426580780775177,342730259144025] 202

期望的输出:

name    doc_id                              type
JD 409839589143224 1843
JD 470573363064028 778
JD 239564999464566 778
BK 426580780775177 202
BK 342730259144025 202

最佳答案

这是使用 tsql 的解决方案,我确信您可以使用 MySql 执行相同的操作

CREATE FUNCTION ufn_split (@list nvarchar(MAX))
RETURNS @tbl TABLE (part nvarchar(max) NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int

SELECT @pos = 0, @nextpos = 1

WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (part)
VALUES (substring(@list, @pos + 1, @valuelen))
SELECT @pos = @nextpos
END
RETURN
END;
GO

SELECT t.name, st.part, t.type
FROM @table AS t
CROSS APPLY ufn_split( LEFT(RIGHT(t.doc_id, LEN(t.doc_id) - 1),LEN(t.doc_id) - 2) ) AS st;

第一个函数是 TSQL 上 Split 函数的实现,从这里 Split function equivalent in T-SQL?

关于mysql - SQL:从列表中提取项目并将其放入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971042/

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