HSQLDB - ค่าว่าง
SQL NULL เป็นคำที่ใช้แทนค่าที่ขาดหายไป ค่า NULL ในตารางคือค่าในเขตข้อมูลที่ดูเหมือนจะว่างเปล่า เมื่อใดก็ตามที่เราพยายามกำหนดเงื่อนไขซึ่งเปรียบเทียบค่าฟิลด์หรือคอลัมน์กับค่า NULL มันจะทำงานไม่ถูกต้อง
เราสามารถจัดการกับค่า NULL ได้โดยใช้สามสิ่งนี้
IS NULL - ตัวดำเนินการจะคืนค่าจริงหากค่าคอลัมน์เป็น NULL
IS NOT NULL - ตัวดำเนินการจะคืนค่าจริงหากค่าของคอลัมน์ไม่ใช่ค่าว่าง
<=> - ตัวดำเนินการเปรียบเทียบค่าซึ่ง (ไม่เหมือนตัวดำเนินการ =) เป็นจริงแม้จะเป็นค่า NULL สองค่า
ในการค้นหาคอลัมน์ที่เป็น NULL หรือ NOT NULL ให้ใช้ IS NULL หรือ IS NOT NULL ตามลำดับ
ตัวอย่าง
ให้เราพิจารณาตัวอย่างที่มีตาราง tcount_tblที่ประกอบด้วยสองคอลัมน์ผู้เขียนและ tutorial_count เราสามารถระบุค่า NULL ให้กับ tutorial_count ได้บ่งชี้ว่าผู้เขียนไม่ได้เผยแพร่บทช่วยสอนแม้แต่รายการเดียว ดังนั้นค่า tutorial_count สำหรับผู้เขียนนั้นจึงเป็น NULL
ดำเนินการค้นหาต่อไปนี้
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);
ใช้คำสั่งต่อไปนี้เพื่อแสดงระเบียนทั้งหมดจากไฟล์ tcount_tbl ตาราง.
select * from tcount_tbl;
หลังจากดำเนินการคำสั่งข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Abdul S | 20 |
| Ajith kumar | 5 |
| Jen | NULL |
| Bavya kanna | 8 |
| mahran | NULL |
| John Poul | 10 |
| Sathya Murthi | 6 |
+-----------------+----------------+
หากต้องการค้นหาระเบียนที่คอลัมน์ tutorial_count เป็น NULL ต่อไปนี้คือแบบสอบถาม
SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;
หลังจากดำเนินการค้นหาคุณจะได้รับผลลัพธ์ต่อไปนี้
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Jen | NULL |
| mahran | NULL |
+-----------------+----------------+
หากต้องการค้นหาระเบียนที่คอลัมน์ tutorial_count ไม่ใช่ NULL ต่อไปนี้คือแบบสอบถาม
SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;
หลังจากดำเนินการค้นหาคุณจะได้รับผลลัพธ์ต่อไปนี้
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Abdul S | 20 |
| Ajith kumar | 5 |
| Bavya kanna | 8 |
| John Poul | 10 |
| Sathya Murthi | 6 |
+-----------------+----------------+
HSQLDB - โปรแกรม JDBC
นี่คือโปรแกรม JDBC ที่ดึงบันทึกแยกต่างหากจากตาราง tcount_tbl โดยที่ tutorial_ count เป็น NULL และ tutorial_count ไม่ใช่ NULL บันทึกโปรแกรมต่อไปนี้ลงในNullValues.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);
}
}
}
คอมไพล์และรันโปรแกรมข้างต้นโดยใช้คำสั่งต่อไปนี้
\>javac NullValues.java
\>Java NullValues
หลังจากดำเนินการคำสั่งข้างต้นคุณจะได้รับผลลัพธ์ต่อไปนี้
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