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