فانكشن COALESCE در اوراکل
بدين صورت تلفظ مي شود(كو-اِ-لِس).
جايگزين بسيار خوب به جاي فانكشن NVL در اوراکل می باشد و در بعضي مواقع بجاي دستور (Case When)
عبارت دستوري:
Oracle function:
COALESCE ("expression 1", "expressions 2", ...)
COALESCE ("expression 1", "expressions 2", ...)
-
بدين صورت است كه اگر عبارت اول null بود عبارت دوم و اگر عبارت دوم null بود عبارت سوم و …
-
استفاده از فانكشن بعنوان عبارت در اوراکل.
-
داراي Performance خوب.
-
نوع Type هاي عبارتها بايد شبيه هم باشد. اگر نبود از توابع To_Char,To_Number, … استفاده كنيد.
براي درك بهتر با مثال بيان مي كنم
1)
SELECT COALESCE(NULL, NULL, '3') FROM dual
Result : 3
SELECT COALESCE(NULL, NULL, '3') FROM dual
Result : 3
2)
SELECT COALESCE(exp1 , To_Char(FNC(P_TEST)) FROM dual
SELECT COALESCE(exp1 , To_Char(FNC(P_TEST)) FROM dual
مثال : استفاده بجاي Case When در اوراکل در زیر نشان داده شده است.
SELECT CASE ("column_name")
WHEN "expression 1 is not NULL" THEN "expression 1"
WHEN "expression 2 is not NULL" THEN "expression 2"
...
[ELSE "NULL"]
END
FROM "table_name";
WHEN "expression 1 is not NULL" THEN "expression 1"
WHEN "expression 2 is not NULL" THEN "expression 2"
...
[ELSE "NULL"] END
FROM "table_name";
Table Contact_Info
Name Business_Phone Cell_Phone Home_Phone
Jeff 531-2531 622-7813 565-9901
Laura NULL 772-5588 312-4088
Peter NULL NULL 594-7477
Name Business_Phone Cell_Phone Home_Phone
Jeff 531-2531 622-7813 565-9901
Laura NULL 772-5588 312-4088
Peter NULL NULL 594-7477
3)
SELECT Name,COALESCE (Business_Phone, Cell_Phone, Home_Phone) Contact_Phone FROM Contact_Info;
Result:
Name Contact_Phone
Jeff 531-2531
Laura 772-5588
Peter 594-7477
SELECT Name,COALESCE (Business_Phone, Cell_Phone, Home_Phone) Contact_Phone FROM Contact_Info;
Result:
Name Contact_Phone
Jeff 531-2531
Laura 772-5588
Peter 594-7477