gpt4 book ai didi

mysql - 如何在 MySQL 中将逗号分隔字段扩展为多行

转载 作者:行者123 更新时间:2023-11-29 06:18:31 25 4
gpt4 key购买 nike

select id, ips from users;

查询结果

id    ips
1 1.2.3.4,5.6.7.8
2 10.20.30.40
3 111.222.111.222,11.22.33.44
4 1.2.53.43

我想运行一个产生以下输出的查询

user_id     ip
1 1.2.3.4
1 5.6.7.8
2 10.20.30.40
3 111.222.111.222
3 11.22.33.44
4 1.2.53.43

最佳答案

如果您不介意使用光标,这里有一个示例:


set nocount on;
-- create sample table, @T
declare @T table(id int, ips varchar(128));
insert @T values(1,'1.2.3.4,5.6.7.8')
insert @T values(2,'10.20.30.40')
insert @T values(3,'111.222.111.222,11.22.33.44')
insert @T values(4,'1.2.53.43')
insert @T values(5,'1.122.53.43,1.9.89.173,2.2.2.1')

select * from @T

-- create a table for the output, @U
declare @U table(id int, ips varchar(128));

-- setup a cursor
declare XC cursor fast_forward for select id, ips from @T
declare @ID int, @IPS varchar(128);

open XC
fetch next from XC into @ID, @IPS
while @@fetch_status = 0
begin
-- split apart the ips, insert records into table @U
declare @ix int;
set @ix = 1;
while (charindex(',',@IPS)>0)
begin
insert Into @U select @ID, ltrim(rtrim(Substring(@IPS,1,Charindex(',',@IPS)-1)))
set @IPS = Substring(@IPS,Charindex(',',@IPS)+1,len(@IPS))
set @ix = @ix + 1
end
insert Into @U select @ID, @IPS

fetch next from XC into @ID, @IPS
end

select * from @U

关于mysql - 如何在 MySQL 中将逗号分隔字段扩展为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096584/

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