Tuesday, April 19, 2011

Oracle, and case sensitive

Oracle, and case sensitive

Oracle မွာ ilike လိုမ်ိဳး case insensitive ျဖစ္ေအာင္လုပ္တာမပါဘူး။
လြယ္တဲ႔ႏွစ္နည္းရိွပါတယ္။ တစ္ခုက session ကို ေဟာသလို change လုိက္ပါ။

ALTER SESSION SET NLS_COMP=LINGUISTIC; 
ALTER SESSION SET NLS_SORT=BINARY_AI;  

select * from tableName where columName like 'test%';


ဒါဆိုရင္ table ထဲမွာ test နဲ႕ TEST ရိွရင္ ႏွစ္ခုစလံုးျမင္ရပါမယ္။ Test ဆိုတဲ႔ အေသးအၾကီးေရာတာလည္းျမင္ရပါမယ္။ teSt ဆိုတာမ်ိဳးေတြလည္း ျမင္ရပါမယ္။ မဟုတ္ရင္ေတာ႔ test ဆို test ပဲျမင္ရလုိ႕ အေတာ္ၾကီးစိတ္ညစ္ရပါတယ္။

ေနာက္တစ္နည္းကေတာ႔ ေပါက္ကရလုပ္ျပီးေရးၾကတာပါ။ ကြ်န္ေတာ္လည္း ဒီနည္းနဲ႕ပဲေရးလုိက္ပါတယ္။ session change ေနရတာပ်င္းစရာေကာင္းတယ္။

select * from tableName where lower(columName ) like lower('test%');

ရယ္စရာေကာင္းပါတယ္။ data ေတြကို ႏွစ္ခုစလံုး lower case ေျပာင္းလုိက္တာပါ။ upper ဆိုျပီး upper case ေျပာင္းလုိက္ရင္လည္းရပါတယ္။ ဒီ query ေလးနဲ႕ oracle မွာ အၾကီးအေသးျပႆနာကင္းေ၀းႏိုင္ပါတယ္။ ဘာမွေတာ႔မထူးဆန္းဘူး။ တကယ္ရွာၾကည္႕ရရင္ပ်င္းစရာေကာင္းတယ္။ ဒါေလးကိုဖတ္ထားလုိက္တဲ႔သူေတြဟာ အနည္းဆံုး နာရီ၀က္ေလာက္ သက္သာသြားပါလိမ္႔မယ္။

ဒီရံုးမွာေတာ႔ တစ္ေန႕တစ္ေန႕ query ေရးေနတာနဲ႕ပဲအေတာ္ေလးအခ်ိန္ေပးရပါတယ္။ Stroed Proc ေတြ၊ Trigger ေတြ၊ constraints ေတြအေၾကာင္းလည္း ၾကံဳသလိုေရးသြားပါဦးမယ္။

Regards,
Z for Zero

2 comments:

Divinity said...

ဘာေတြမွန္းမသိ o_O အသစ္ဝယ္ထားတယ့္ Laura Stack စာအုပ္ထဲက အေၾကာင္းေရးဗ်ာ :D

Zephyr said...

ေရးမယ္ေလ။
အခုလည္း လူတကာေသာက္ျမင္ကတ္ေအာင္ အဲဒီစာအုပ္ၾကီးကို စားပြဲေပၚမွာ ျမင္သာေအာင္ခ်ခ်ထားတယ္။ ရံုးမွာနည္းနည္းစီဖတ္ေနတယ္။
:P

ဒီဘက္မွာေရးမလား ဟုိဘက္မွာေရးမလား စဥ္းစားေနတာ။ စိတ္၀င္စားစရာေတြပါတယ္။ spaghetti rules တို႕ဘာတုိ႕။

အလုပ္ကို တကယ္မ်ားလို႕ေနာက္က်တာမဟုတ္ဘဲ productive မျဖစ္လုိ႕ေနာက္က်တာေတြကို ေတာ္ေတာ္မ်ားမ်ားေျဖရွင္းႏုိင္ေအာင္ေရးထားတယ္။

ေရးရင္လည္း အနည္းဆံုး ဆယ္ပိုင္းေလာက္ေရးရမွာဆိုေတာ႔ စဥ္းစားေနတာ။
See how lah...