NVL,COALESCE,ISNULL - Thay dữ liệu NULL bằng giá trị truyền vào

- Khi nào chúng ta cần sử dụng hàm này: trong trường hợp  các bạn ghép các chuỗi lại với nhau, hoặc cộng các số lại ,mà giá trị của các cột đó có thể chứa giá trị null
thì chúng ta phải dùng hàm thay thế giá trị null bằng một giá trị mặc định do chúng ta truyền vào.
Vì trong SQL bất kỳ giá trị nào cộng với null điều bằng null  .
vd:  'a'||null = null hoặc  5 + null = nulll

cách giải quyết trường hợp trên là chúng ta sử dụng function sau :
ORACLE sử dụng : NVL
cú pháp : NVL(column_name,[values_new])
MySQL sử dụng : ISNULL
cú pháp : ISNULL(column_name,[values_new])
Postgres sử dụng : COALESCE
cú pháp : COALESCE(column_name,[values_new])

ví dụ :
Table: Infomation
id       ho ten_dem      ten
-------------------------------------
901 Nguyễn văn A
902 Nguyễn văn B
903 Nguyễn văn C
904 Nguyễn null D
905 Nguyễn null E

nếu dùng select thông thường thì chúng ta mất họ tên của 2 dòng cuối
Select id, (ho||ten_dem||ten) ho_va_ten from Infomation ;

kết quả:
id ho_va_ten
--------------------------
901 Nguyễn văn A
902 Nguyễn văn B
903 Nguyễn văn C
904 null
905 null

Để có họ tên đầy đủ của 5 dòng ta dùng câu lệnh sau đây.
Oracle thì dùng:
Select id, (ho||NVL(ten_dem,'')||ten) ho_va_ten from Infomation ;
MySQL thì dùng:
Select id, (ho||ISNULL(ten_dem,'')||ten) ho_va_ten from Infomation ;
Postgres thì dùng:
Select id, (ho||COALESCE(ten_dem,'')||ten) ho_va_ten from Infomation ;

kết quả:
id     ho_va_ten
-----------------
901 Nguyễn văn A
902 Nguyễn văn B
903 Nguyễn văn C
904 Nguyễn D
905 Nguyễn E

vd :
table: Diem
id ten toan Ly
101 Tèo 5 null
102 Tý 6 10
103 Sửu null 5
104 Lợi null 7

nếu dùng select thông thường thì chúng ta không thể cộng được điểm của 2 môn toan+ly lại
Select id, ten, (toan+ly) toan_ly from Infomation ;
kết quả :
id ten toan_ly
-------------------------
101  Tèo null
102  Tý 16
103  Sửu null
104  Lợi null

Oracle thì dùng:
Select id, ten, (nvl(toan,0)+nvl(ly,0)) toan_ly from Infomation ;
MySQL thì dùng:
Select id, ten, (ISNULL(toan,0)+ISNULL(ly,0)) toan_ly from Infomation ;
Postgres thì dùng:
Select id, ten, (COALESCE(toan,0)+COALESCE(ly,0)) toan_ly from Infomation ;

kết quả :
id ten toan_ly
-------------------------
101  Tèo 5
102  Tý 16
103  Sửu  5
104  Lợi 7


----------------------
có bất kỳ khó khăn hoặc thắc mắc gì, các bạn vui lòng để lại comment bên dưới, tôi sẽ giải đáp.
Previous
Next Post »