当前位置:首页 » 编程语言 » sql逗号分隔转换多行
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql逗号分隔转换多行

发布时间: 2022-05-10 22:27:26

A. sql server中,怎样查询字段把逗号分割的字符串拆分成多条数据

sql server中没有这种函数,可以自建一个function去拆分,
给你个思路,
用charindex 或是instr等函数,在循环体中查找分隔符出现的位置和并记录出现次数到变量,然后使用substring函数截取字符串,输出

B. SQL Server 表中字段按分隔符拆分为多行问题

select num,id, substr(test1,0,instr(test1, ',')-1) test1, substr(test2,0,instr(test2, ',')-1) test2, substr(test3,0,instr(test3, ',')-1) test3 from table_name --前
union
select num,id, substr(test1,instr(test1, ',')+1) test1, substr(test2,instr(test2, ',')+1) test2, substr(test3,instr(test3, ',')+1) test3 from table_name --后

instr(test1, ',') 是计算逗号的位置。

C. SQL 把字段内容按分隔符,转换成多行插入到另一个表。

select a.V1,b.V2
from(
select V1, [V2] = CONVERT(xml,'<root><v>' + REPLACE([V2], ',', '</v><v>') + '</v></root>')
from 原表T1
) a
OUTER APPLY(
select V2 = N.v.value('.', 'varchar(100)')
from a.[V2].nodes('/root/v') N(v)
) b

D. SQL逗号分割一列数据的值,将结果变成一行多列

我没看懂你的意思但是我有一样个批量删除的比如
/*
使用存储过程实现如下功能,批量删除实际选中的多个反馈活动。
*/
--包规范
create
or
replace
package
pak_activeinfo
as
procere
sp_activeinfo
(
i_activeid
varchar2
);
end
pak_activeinfo;
--包主体
create
or
replace
package
body
pak_activeinfo
as
procere
sp_activeinfo
(
i_activeid
varchar2
)
as
activeid1
varchar2(100);
activeid2
varchar2(100);
activeid3
varchar2(10000)
:=
i_activeid;
a
number;
b
number;
begin
savepoint
sp;--回滚点
select
instr(activeid3,',')
into
a
from
al;
b
:=
a-1;
for
i
in
1..floor(length(activeid3)/b)
loop--改正
--获取第一个编号
select
substr(activeid3,1,b)
into
activeid1
from
al;
--修改表
update
activeinfo
set
status
=
1
where
activeid
=
activeid1;
--截取第一个编号
select
ltrim(activeid3,activeid1)
into
activeid2
from
al;
--去掉,号
select
ltrim(activeid2,',')
into
activeid3
from
al;
end
loop;
commit;
exception
when
no_data_found
then
dbms_output.put_line('失败!');
when
others
then
dbms_output.put_line('读去失败!原因是:'||sqlerrm);
rollback
to
savepoint
sp;
end
sp_activeinfo;
end
pak_activeinfo;
--测试
begin
pak_activeinfo.sp_activeinfo('1000,1001,1002');
end;
能看懂吗?
按长度用循环去掉逗号!
希望对你有帮助!

E. SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据

不知道你是什么数据库,如果是Mysql,可以这样(假定含有qq字段的表为t1,另一张表为t2):
select `name` from `t2` where find_in_set(`id`, (select `nameid` from `t1` where `qq`=123));
如果是SQLServer,则这样:
select [name] from [t2] where charindex(','+[id]+',',','+(select [nameid] from [t1] where [qq]=123)+',')>0;
如果是ACCESS,则这样:
select [name] from [t2] where instr(',' & (select [nameid] from [t1] where [qq]=123) & ',',',' & [id] & ',')>0;

F. 如何用sql语句多行数据拼接逗号隔开

mysql中,有标准函数,group_concat(name),直接返回连接好的字符串,并以逗号分割,如果记录比较多,超过函数返回值的最大值,可以调整mysql启动参数,增加显示值的长度。

G. 如何用sql语句将一列多行数据拼接逗号隔开形成一条记录

mysql中,有标准函数,group_concat(name),直接返回连接好的字符串,并以逗号分割,如果记录比较多,超过函数返回值的最大值,可以调整mysql启动参数,增加显示值的长度。

H. sql一个字段内有分隔符如何拆分成多行

select num,id, substr(test1,0,instr(test1, ',')-1) test1, substr(test2,0,instr(test2, ',')-1) test2, substr(test3,0,instr(test3, ',')-1) test3 from table_name --前
union
select num,id, substr(test1,instr(test1, ',')+1) test1, substr(test2,instr(test2, ',')+1) test2, substr(test3,instr(test3, ',')+1) test3 from table_name --后

instr(test1, ',') 是计算逗号的位置。

I. 编写一个sql语句,把b列中的数据用逗号分隔开,变成很多谢谢

这个我做过,拆分逗号分隔符变列
select a,
t.ca,
c.lv,instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select a,
',' || b || ',' AS ca,
b,
LENGTH(b),
length(b || ','),
REPLACE(b, ','),
length(REPLACE(b, ',')), --删除逗号的长度
nvl(length(REPLACE(b, ',')), 0), --空值长度为空,因此要将空值替换为0
length(b || ',') - nvl(length(REPLACE(b, ',')), 0) AS cnt --以逗号分隔的字符串个数,先在原来的长度上加1 计算去除所有逗号后字符串长度,再,拿这个
FROM TEST_A) t,
(select LEVEL lv from al CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt --逗号数量在100以内

J. 如何用SQL语句将数据一行变成多行呢

截断数据,在新增分隔符即可。
放大招
指定索引号,进行数据截取,返回处理后的字符串数组
string str =你的数据
str.substring(你想分的长度)你自己打印一个转换符就好了