oracle sql 实现查询时把一字符串按逗号分割,返回分割后的份数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle sql 实现查询时把一字符串按逗号分割,返回分割后的份数?相关的知识,希望对你有一定的参考价值。

如:有一字符“a,b,c,d”查询时返回4;有一字符 “张三,李四,王五,赵六” 查询时返回4

上代码上图

select length('张三,李四,王五,赵六')-length(replace('张三,李四,王五,赵六',','))+1 from dual;

参考技术A oracle 中可以用connect by把字符串按都好分割:
比如定义字符串:
pv_no_list :='23,34,45,56';
SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) IS NOT NULL
order by 1
返回结果:
TOKEN
23
34
45
56
参考技术B declare @a varchar(32),@n int =1
set @a='张三,李四,王五,赵六'   --给@a赋值
while charindex(',',@a)>0 
begin
 set @a=substring(@a,charindex(',',@a)+1,len(@a)-charindex(',',@a))
 set @n=@n+1
end 
select @n     --得到一个字符被','分割的份数

参考技术C 不太明白你的意思?
select len(replace(Col,',','--'))-len(Col)+1 fromTab
这样?

以上是关于oracle sql 实现查询时把一字符串按逗号分割,返回分割后的份数?的主要内容,如果未能解决你的问题,请参考以下文章

SQL拆分逗号分隔的字符串

SQL中逗号分隔的查询结果转换成单个字符串放到in语句里

mysql查询某数字在某字段以逗号隔开的字符里面

oracle语句中如何把一列的值合并为一个值,用逗号隔开?

基于输入范围的排序逗号分隔字符串的 MAX/MIN 的 SQL 查询

sql 里 怎么把一列的值合并成一个字符串