- vừa được xem lúc

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

0 0 26

Người đăng: Nguyễn Đình Nghĩa

Theo Viblo Asia

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

 SELECT '0 IS NULL???' AS "what is NULL?" FROM dual WHERE 0 IS NULL
UNION ALL SELECT '0 is not null' FROM dual WHERE 0 IS NOT NULL
UNION ALL SELECT ''''' IS NULL???' FROM dual WHERE '' IS NULL
UNION ALL SELECT ''''' is not null' FROM dual WHERE '' IS NOT 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

SELECT 1 , 1 || '' , 1 || NULL FROM dual

Kết quả

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

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é!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Stored Procedure trong SQL Server

Stored Procedure là 1 phần không thể thiếu của SQL Server. Chúng có thể hỗ trợ rất nhiều cho lập trình và cấu hình cơ sở dữ liệu.

0 0 134

- vừa được xem lúc

sử dụng index trong sql query

Index là một trong những yếu tố quan trọng nhất góp phần vào việc nâng cao hiệu suất của cơ sở dữ liệu. Index trong SQL tăng tốc độ của quá trình truy vấn dữ liệu bằng cách cung cấp phương pháp truy xuất nhanh chóng tới các dòng trong các bảng, tương tự như cách mà mục lục của một cuốn sách giúp bạn

0 0 178

- vừa được xem lúc

Hướng dẫn sửa lỗi không cài được SQL Server

Hôm qua do yêu cầu môn học, mình có cài lại Microsoft SQL Server. Trước đó mình có cài rồi, nhưng rồi lâu không dùng nên gỡ ra cho nhẹ máy. Bây giờ có dịp cần nên mình mới cài lại. Chi tiết lỗi mình gặp phải.

0 0 119

- vừa được xem lúc

Bạn nên tránh sử dụng Soft Delete khi có thể, và đây là lý do tại sao

Con người luôn luôn mắc sai lầm. Vì vậy, việc "lo xa" trước mọi tình huống xấu nhất chưa bao giờ là thừa.

0 0 126

- vừa được xem lúc

Sử dụng trigger trong SQL qua ví dụ cơ bản.

Trigger là gì . Cú pháp của Trigger. CREATE TRIGGER tên_trigger ON tên_bảng. FOR {DELETE, INSERT, UPDATE}.

0 0 144

- vừa được xem lúc

Khác biệt giữa khóa chính và khóa ngoại trong SQL

Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng. Trong bài này, tôi muố

0 0 131