HSQLDB - wartości null
SQL NULL to termin używany do reprezentowania brakującej wartości. Wartość NULL w tabeli to wartość w polu, które wydaje się puste. Ilekroć próbujemy podać warunek porównujący wartość pola lub kolumny z wartością NULL, nie działa on poprawnie.
Możemy obsłużyć wartości NULL, używając trzech rzeczy.
IS NULL - Operator zwraca prawdę, jeśli wartość kolumny jest równa NULL.
IS NOT NULL - Operator zwraca prawdę, jeśli wartość kolumny NIE jest NULL.
<=> - Operator porównuje wartości, które (w przeciwieństwie do operatora =) są prawdziwe nawet dla dwóch wartości NULL.
Aby wyszukać kolumny o wartości NULL lub NOT NULL, użyj odpowiednio IS NULL lub IS NOT NULL.
Przykład
Rozważmy przykład, gdzie jest stół tcount_tblktóry zawiera dwie kolumny, autora i tutorial_count. Możemy podać wartości NULL do tutorial_count wskazującego, że autor nie opublikował nawet jednego samouczka. Dlatego wartość tutorial_count dla tego autora to NULL.
Wykonaj następujące zapytania.
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);
Użyj następującego polecenia, aby wyświetlić wszystkie rekordy z tcount_tbl stół.
select * from tcount_tbl;
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Abdul S | 20 |
| Ajith kumar | 5 |
| Jen | NULL |
| Bavya kanna | 8 |
| mahran | NULL |
| John Poul | 10 |
| Sathya Murthi | 6 |
+-----------------+----------------+
Aby znaleźć rekordy, w których kolumna tutorial_count JEST NULL, wykonaj zapytanie.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;
Po wykonaniu zapytania otrzymasz następujące dane wyjściowe.
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Jen | NULL |
| mahran | NULL |
+-----------------+----------------+
Aby znaleźć rekordy, w których kolumna tutorial_count NIE MA wartości NULL, poniżej znajduje się zapytanie.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;
Po wykonaniu zapytania otrzymasz następujące dane wyjściowe.
+-----------------+----------------+
| author | tutorial_count |
+-----------------+----------------+
| Abdul S | 20 |
| Ajith kumar | 5 |
| Bavya kanna | 8 |
| John Poul | 10 |
| Sathya Murthi | 6 |
+-----------------+----------------+
HSQLDB - program JDBC
Oto program JDBC, który pobiera rekordy niezależnie od tabeli tcount_tbl, gdzie tutorial_ count ma wartość NULL, a tutorial_count NIE jest NULL. Zapisz następujący program wNullValues.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);
}
}
}
Skompiluj i uruchom powyższy program, używając następującego polecenia.
\>javac NullValues.java
\>Java NullValues
Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.
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