sql将一列按逗号拆分多列 Oracle逗号分隔列转行实现方法?
Oracle逗号分隔列转行实现方法?在执行系统时,我们经常会遇到多个信息存储在由逗号或其他符号分隔的字段中。例如,保存用户的一对多权限时,权限组字段中会保存多个权限号,用逗号分隔。现在,如果您提供一个
Oracle逗号分隔列转行实现方法?
在执行系统时,我们经常会遇到多个信息存储在由逗号或其他符号分隔的字段中。例如,保存用户的一对多权限时,权限组字段中会保存多个权限号,用逗号分隔。
现在,如果您提供一个权限号并希望检索所用权限的用户集,则需要在多个由逗号分隔的权限号中匹配给定的权限号。如果你用like来做,它将是低效和不准确的。因此,我们使用逗号分隔列。目前,这种方法只适用于Oracle数据库。这种方法只需要SQL语句就可以实现列到行的转换。
oracle如何将一个字段由逗号分割成多行?
从表中选择sum(column),sum(decode(column,null,1,0))
Oracle数据库字段拆分的实现方法:用正则表达式拆分字段,如a,B,C,D,esql,编写如下:从dual connect by rownum<=length(regexpuureplace(“a,b,c,d,e,”,“[^,]”,1,rownum)中选择regexpusubstr(“a,b,c,”,“[^,]”,null))结果:执行结果如下:1 A2 B3 C4 D5 e
1临时表2拆分字符串3按逗号顺序放入临时表,不懂PLSQL,所以只能提供一个思路。如果你知道XML,也许最好先把一个好的字符串转换成XML,然后再转换成一个表
substr(字符串,起始位置,截断数)
使用上面的函数完成判断
如果是查询
选择casesubstr(field,1,1)
when“,”然后substr(field,2,长度(字段)-1)
else field
endas field name
来自表