1、在数据库sql中如何切割字符串的时候,高效且快,数据量大,字段中逗号分割的部门id,如果使用递归函数超出一定之后就会很慢。如图:
2、我使用的是以下sql:
select distinct id,LEVEL,replace(regexp_substr(dptid,'[^,]+',1,level),',',' ') dptid
from user
connect BY LEVEL<=length(dptid)-length(replace(dptid,',',''))+1
order by id,LEVEL
但是这种sql最大的问题就是如果字段中id 20-30条的时候,并且数据条数很多的话,那么这种递归函数就会卡死,查不出来。如图:
这种情况的话,他就分割不出来,数据小的话还是可以,请问有什么函数可以高效,并且需要考虑数据量很多的情况下,很快的切割出来。需要达到上面效果图, id 对应起来。
注:提供的方法一经测试可以使用,既采纳!
我觉得哈,为什么要用sql去做功能呢,查询出来使用其他语言来做不是很轻松得事情嘛?
如果你非要用sql来做的话,可以采用一些算法来完成。
举个简单的例子,可以将一串数据先分成几份,然后再逐份进行切割,以此类推...
还有很多其他的算法可以去实现,根据算法复杂度选择合适的那种。