sql將一列按逗號拆分多列 Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?
Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。現(xiàn)在,如果您提供一個
Oracle逗號分隔列轉(zhuǎn)行實現(xiàn)方法?
在執(zhí)行系統(tǒng)時,我們經(jīng)常會遇到多個信息存儲在由逗號或其他符號分隔的字段中。例如,保存用戶的一對多權限時,權限組字段中會保存多個權限號,用逗號分隔。
現(xiàn)在,如果您提供一個權限號并希望檢索所用權限的用戶集,則需要在多個由逗號分隔的權限號中匹配給定的權限號。如果你用like來做,它將是低效和不準確的。因此,我們使用逗號分隔列。目前,這種方法只適用于Oracle數(shù)據(jù)庫。這種方法只需要SQL語句就可以實現(xiàn)列到行的轉(zhuǎn)換。
oracle如何將一個字段由逗號分割成多行?
從表中選擇sum(column),sum(decode(column,null,1,0))
Oracle數(shù)據(jù)庫字段拆分的實現(xiàn)方法:用正則表達式拆分字段,如a,B,C,D,esql,編寫如下:從dual connect by rownum<=length(regexpuureplace(“a,b,c,d,e,”,“[^,]”,1,rownum)中選擇regexpusubstr(“a,b,c,”,“[^,]”,null))結(jié)果:執(zhí)行結(jié)果如下:1 A2 B3 C4 D5 e
1臨時表2拆分字符串3按逗號順序放入臨時表,不懂PLSQL,所以只能提供一個思路。如果你知道XML,也許最好先把一個好的字符串轉(zhuǎn)換成XML,然后再轉(zhuǎn)換成一個表
substr(字符串,起始位置,截斷數(shù))
使用上面的函數(shù)完成判斷
如果是查詢
選擇casesubstr(field,1,1)
when“,”然后substr(field,2,長度(字段)-1)
else field
endas field name
來自表