HSQLDB - Nullwerte

SQL NULL ist ein Begriff, der verwendet wird, um einen fehlenden Wert darzustellen. Ein NULL-Wert in einer Tabelle ist ein Wert in einem Feld, der leer zu sein scheint. Immer wenn wir versuchen, eine Bedingung anzugeben, die den Feld- oder Spaltenwert mit NULL vergleicht, funktioniert dies nicht ordnungsgemäß.

Wir können mit den NULL-Werten umgehen, indem wir die drei Dinge verwenden.

  • IS NULL - Der Operator gibt true zurück, wenn der Spaltenwert NULL ist.

  • IS NOT NULL - Der Operator gibt true zurück, wenn der Spaltenwert NICHT NULL ist.

  • <=> - Der Operator vergleicht Werte, was (im Gegensatz zum Operator =) auch für zwei NULL-Werte gilt.

Verwenden Sie IS NULL bzw. IS NOT NULL, um nach Spalten zu suchen, die NULL oder NOT NULL sind.

Beispiel

Betrachten wir ein Beispiel, in dem es eine Tabelle gibt tcount_tblDas enthält zwei Spalten, author und tutorial_count. Wir können dem tutorial_count NULL-Werte geben. Dies zeigt an, dass der Autor nicht einmal ein Tutorial veröffentlicht hat. Daher ist der Wert tutorial_count für den jeweiligen Autor NULL.

Führen Sie die folgenden Abfragen aus.

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);

Verwenden Sie den folgenden Befehl, um alle Datensätze aus dem anzuzeigen tcount_tbl Tabelle.

select * from tcount_tbl;

Nach Ausführung des obigen Befehls erhalten Sie die folgende Ausgabe.

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

Um die Datensätze zu finden, in denen die Spalte tutorial_count NULL ist, folgt die Abfrage.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Nach Ausführung der Abfrage erhalten Sie die folgende Ausgabe.

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

Um die Datensätze zu finden, in denen die Spalte tutorial_count NICHT NULL ist, folgt die folgende Abfrage.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Nach Ausführung der Abfrage erhalten Sie die folgende Ausgabe.

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

HSQLDB - JDBC-Programm

Hier ist das JDBC-Programm, das die Datensätze getrennt von der Tabelle tcount_tbl abruft, wobei die Anzahl der Lernprogramme NULL und die Anzahl der Lernprogramme NICHT NULL ist. Speichern Sie das folgende Programm inNullValues.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);
      }
   }
}

Kompilieren Sie das obige Programm und führen Sie es mit dem folgenden Befehl aus.

\>javac NullValues.java
\>Java NullValues

Nach Ausführung des obigen Befehls erhalten Sie die folgende Ausgabe.

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