Wednesday, February 23, 2011

decode in oracle.

decode in oracle.

တခါတေလ oracle မွာ decode ဆိုတာကိုေတြ႕ရတတ္တယ္။
အဲဒါကို ရွာၾကည္႕ရမွာပ်င္းတဲ႔သူေတြအတြက္ ၾကိဳဖတ္ထားလုိ႕ရေအာင္ပါ။

SELECT name,
decode(id,'B0001','ID_1,
'B0002','ID_2,
'B0003','ID_3,
'ID_DEFAULT')ID_MASK


FROM customer;

အဲဒါၾကည္႕ရင္ CASE မသံုးခ်င္လုိ႕ အလြယ္လုပ္ထားတာကို ေတြ႕ရပါမယ္။
ဆိုလိုတာက id ကိုၾကည္႕ျပီး B001 ကို ID_1 လို႕ေျပာင္းတာကို ေရးရင္ ရွည္လို႕ လြယ္လြယ္ကူကူ decode function ေလးနဲ႕သပ္သပ္ရပ္ရပ္ေရးလုိက္တာပါပဲ။ ID_MASK က ေတာ႔ alias တစ္ခုေပးလုိက္တာပါပဲ။ ဘာမွမဟုတ္ပါဘူး။

အဲဒါကို IF-THEN-ELSE နဲ႕ေရးရင္ ဒီလိုရပါမယ္
if (id='B0001') then
ID_MASK:='ID_1'
esle if (id='B0002') then
ID_MASK:='ID_2'
else if (id='B0003') then
ID_MASK:='ID_3'
else
ID_MASK:='ID_DEFAULT'
decode ဆိုလို႕ ဘာမ်ားလဲမသိျဖစ္တတ္တာပါ။ အမွန္က ေထြေထြထူးထူးမဟုတ္ပါဘူး။

decode( expression , search , result [, search , result]... [, default] )

အဲဒီလိုမွတ္လုိ႕ရပါတယ္။ NULL ဆိုရင္ 0 ေျပာင္းထည္႕မယ္။ မဟုတ္ရင္ default အတိုင္းျပမယ္ဆိုတာေတြေရးလုိ႕လည္းရပါတယ္။

DECODE(EXTRA_PREMIUM,NULL,0,EXTRA_PREMIUM)

အေပၚက decode မွာဆိုရင္ extra premium field က Null ဆိုရင္ zero လို႕ျပမယ္။ Null မဟုတ္ရင္ သူ႕တန္ဖိုးအတုိင္းျပမယ္။

အလုပ္လုပ္ေနရင္း အသံုးလိုတာေလးေတြ share လိုက္တာပါ။ အေသးအဖြဲေတြေပမယ္႔ သိထားရင္ အသံုး၀င္ႏိုင္ပါတယ္။

No comments: