在寫 sql的時(shí)候我們會(huì)經(jīng)常使用到decode函數(shù)价淌,今天我們來講一些decode的基本用法吧申眼。
表達(dá)式:decode(列名,值1蝉衣,值11括尸,值2,值22病毡,值3濒翻,值33......,值X)
表達(dá)式的意思:
? ? ? ?文字描述:如果列名對應(yīng)的值等于值1啦膜,那么他的值就等于值11有送,如果列名對應(yīng)的值是值2那么他的值就是值22,如果列名對應(yīng)的值是值3那么他的值就是值33等等僧家,條件都不滿足雀摘,列名的值就是值X。
? ? ? ?用java的語法來表達(dá)就是:
? ? ? if(列名的值==值1){ ?列名的值=值11? ? ? }
? ? ? else if(列名的值==值2){? 列名的值=值22}
? ? ? else if(列名的值==值3){? 列名的值=值33}
? ? ? 八拱。阵赠。。肌稻。清蚀。。爹谭。
? ? ? else{ 列名的值=值X}
? ? ?其實(shí)在sql中還有一種方法表達(dá)的來表達(dá)if else的判斷語句枷邪,那就是 case when語句,但是case when 有兩種表方式.
? ? 用case when 來表達(dá)上面的語句:
表達(dá)方式一:
? ? case 列名 when 值1 then 值11
? ? ? ? ? ? ? ? ? ?when 值2 then 值22
? ? ? ? ? ? ? ? ? ?when 值3 then 值33
? ? ? ? ? ? ? ? ? 诺凡。齿风。药薯。。救斑。。真屯。
? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? 值X
? ? ? end
表達(dá)方式二:
case when 列名==值1 then 值11
when 列名==值2 then 值22
when 列名==值3 then 值33
脸候。。绑蔫。运沦。。配深。携添。
else
值X
end
最后提一點(diǎn)一定要注意的是:
不管是case when 還是 decode 他們的值11,值22篓叶,值33 ?必須是同一種類型烈掠。
decode(列名,值1缸托,varchar2左敌,值2,varchar2俐镐,值3矫限,varchar2......,varchar2)
decode(列名佩抹,值1叼风,number,值2棍苹,number无宿,值3,number......廊勃,number)
如果不一樣那就會(huì)報(bào)錯(cuò)
無效數(shù)字
ps:如果對你們有幫助請點(diǎn)擊下面的喜歡懈贺,謝謝