编写一个sql语句,把b列中的数据用逗号分隔开,变成很多?谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个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 dual CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt --逗号数量在100以内 参考技术A select to_char(listagg(B, ', ') within group(order by B))
from (select 1 as B
from dual
union
select 2 AS B
from dual
union
select 3 AS B from dual) 参考技术B 你有没有想过,变成很多之后放在哪里?追问
还放在数据库中的表里面。
追答百度一下oracle split函数,有很多写好的.
ps:每个逗号分开一列?你知道有多少列?
SQL中逗号分隔的查询结果转换成单个字符串放到in语句里
查询的结果转换成单个字符串放到in语句里
现查询语句:select student from xxhd where school in (select school from school)
主要问题是select school from school查询出来的结果是第一中学,第二中学,第三中学...都在一行里,需要把第一中学,第二中学,第三中学转换为'第一中学','第二中学','第三中学',以便实现
select student from xxhd where school in ('第一中学','第二中学','第三中学')这样的查询结果,当然,不能写成固定值,只能把select school from school查询后的结果进行转换
谢谢大家!最好用SQL语句,不用函数。
大侠,显示有语法错误,是哪里问题!
忘记问你了,你这是什么数据库,|| 是oracle字符串链接的符号。。。
sql server是+
谢谢,语句可以执行了,就是查询不到数据
要不用CHARINDEX()
select student from xxhd a, school b where CHARINDEX(a.school,b.school)>0
第二条语句,也没有返回结果,空的
本回答被提问者采纳 参考技术B select student from xxhd where CHARINDEX(school,(select school from school))>0以上是关于编写一个sql语句,把b列中的数据用逗号分隔开,变成很多?谢谢的主要内容,如果未能解决你的问题,请参考以下文章