Tăng tốc database phần 15 NULL trong Oracle Database

Tram Ho

NULL luôn là một thứ gây bối rối, mặc dù ý tưởng của nó chỉ đơn giản là một giá trị cho biết là chỗ này chưa có dữ liệu. Có một số cái lạ nữa như là truy vấn thì luôn dùng IS NULL chứ không dùng = NULL. Tuy nhiên ORACLE đối xử với NULL một cách dị hợm hơn chuẩn thông thường. Hơn nữa cách index trên NULL còn tiếp tục khác biệt.

Theo chuẩn thông thường, NULL được định nghĩa là chưa có dữ liệu, hoặc dữ liệu chưa xác định. Nghĩa là không có giá trị nào = NULL. Tuy nhiên ORACLE lại khác nó coi empty string là NULL

Đây là kết quả

what is NULL?
0 is not null
” IS NULL???

Với tâm lý thích làm Dev phải băn khoăn, Oracle còn cho NULL là empty string luôn

Kết quả

image.png

Trong khi ở db khác nó sẽ thế này
image.png

Về cơ bản khác db khác mà có quan hệ với NULL sẽ là NULL nhưng oracle thì không như vậy. Thường thì ở mọi ngôn ngữ lập trình empty string sẽ không bao giờ là NULL. Ngoại trừ …
Oracle Database. Nên là trong thực tế không thể nào lưu giá trị empty string với kiểu VARCHAR2. Nếu bạn cố lưu thì Oracle đơn giản chỉ lưu NULL vào đó.

Cái đặc thù này không những lạ mà còn nguy hiểm. Và điều này còn tiếp tục của phần index nữa và mình sẽ nói ở những bài sau nhé!

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo