HSQLDB - Giá trị rỗng

SQL NULL là một thuật ngữ được sử dụng để biểu thị một giá trị bị thiếu. Giá trị NULL trong bảng là giá trị trong trường có vẻ như là trống. Bất cứ khi nào chúng tôi cố gắng đưa ra một điều kiện, so sánh giá trị trường hoặc cột với NULL, nó không hoạt động đúng.

Chúng ta có thể xử lý các giá trị NULL bằng cách sử dụng ba điều.

  • IS NULL - Toán tử trả về true nếu giá trị cột là NULL.

  • IS NOT NULL - Toán tử trả về true nếu giá trị cột KHÔNG ĐỦ.

  • <=> - Toán tử so sánh các giá trị, (không giống như toán tử =) đúng ngay cả với hai giá trị NULL.

Để tìm kiếm các cột NULL hoặc NOT NULL, hãy sử dụng IS NULL hoặc IS NOT NULL tương ứng.

Thí dụ

Chúng ta hãy xem xét một ví dụ nơi có một bảng tcount_tblchứa hai cột, tác giả và tài khoản hướng dẫn. Chúng tôi có thể cung cấp giá trị NULL cho số lượng tutorial_count cho biết rằng tác giả đã không xuất bản dù chỉ một hướng dẫn. Do đó, giá trị tutorial_count cho tác giả tương ứng đó là NULL.

Thực hiện các truy vấn sau.

create table tcount_tbl(author varchar(40) NOT NULL, tutorial_count INT);
INSERT INTO tcount_tbl values ('Abdul S', 20);
INSERT INTO tcount_tbl values ('Ajith kumar', 5);
INSERT INTO tcount_tbl values ('Jen', NULL);
INSERT INTO tcount_tbl values ('Bavya kanna', 8);
INSERT INTO tcount_tbl values ('mahran', NULL);
INSERT INTO tcount_tbl values ('John Poul', 10);
INSERT INTO tcount_tbl values ('Sathya Murthi', 6);

Sử dụng lệnh sau để hiển thị tất cả các bản ghi từ tcount_tbl bàn.

select * from tcount_tbl;

Sau khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

+-----------------+----------------+
|     author      | tutorial_count |
+-----------------+----------------+
|      Abdul S    |      20        |
|    Ajith kumar  |      5         |
|        Jen      |     NULL       |
|    Bavya kanna  |      8         |
|       mahran    |     NULL       |
|     John Poul   |      10        |
|   Sathya Murthi |      6         |
+-----------------+----------------+

Để tìm các bản ghi trong đó cột tutorial_count LÀ KHÔNG ĐỦ, sau đây là truy vấn.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Sau khi thực hiện truy vấn, bạn sẽ nhận được kết quả sau.

+-----------------+----------------+
|     author      | tutorial_count |
+-----------------+----------------+
|       Jen       |     NULL       |
|      mahran     |     NULL       |
+-----------------+----------------+

Để tìm các bản ghi mà cột tutorial_count KHÔNG ĐẦY ĐỦ, sau đây là truy vấn.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Sau khi thực hiện truy vấn, bạn sẽ nhận được kết quả sau.

+-----------------+----------------+
|      author     | tutorial_count |
+-----------------+----------------+
|      Abdul S    |      20        |
|     Ajith kumar |       5        |
|     Bavya kanna |       8        |
|     John Poul   |      10        |
|   Sathya Murthi |       6        |
+-----------------+----------------+

HSQLDB - Chương trình JDBC

Đây là chương trình JDBC lấy các bản ghi tách biệt khỏi bảng tcount_tbl trong đó số lượng hướng dẫn là NULL và số lượng hướng dẫn là KHÔNG ĐỦ. Lưu chương trình sau vàoNullValues.java.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class NullValues {
   public static void main(String[] args) {
      Connection con = null;
      Statement stmt_is_null = null;
      Statement stmt_is_not_null = null;
      ResultSet result = null;
      try {
         Class.forName("org.hsqldb.jdbc.JDBCDriver");
         con = DriverManager.getConnection(
            "jdbc:hsqldb:hsql://localhost/testdb", "SA", "");
         stmt_is_null = con.createStatement();
         stmt_is_not_null = con.createStatement();
         result = stmt_is_null.executeQuery(
            "SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;");
         System.out.println("Records where the tutorial_count is NULL");
         
         while(result.next()){
            System.out.println(result.getString("author")+" |
            "+result.getInt("tutorial_count"));
         }
         result = stmt_is_not_null.executeQuery(
            "SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;");
         System.out.println("Records where the tutorial_count is NOT NULL");
         
         while(result.next()){
            System.out.println(result.getString("author")+" |
            "+result.getInt("tutorial_count"));
         }
      } catch (Exception e) {
         e.printStackTrace(System.out);
      }
   }
}

Biên dịch và thực hiện chương trình trên bằng lệnh sau.

\>javac NullValues.java
\>Java NullValues

Sau khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Records where the tutorial_count is NULL
Jen         | 0
mahran      | 0

Records where the tutorial_count is NOT NULL
Abdul S        | 20
Ajith kumar    | 5
Bavya kanna    | 8
John Poul      | 10
Sathya Murthi  | 6