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.
Sign up here with your email

ConversionConversion EmoticonEmoticon