HSQLDB - Valeurs nulles

SQL NULL est un terme utilisé pour représenter une valeur manquante. Une valeur NULL dans une table est une valeur dans un champ qui semble vide. Chaque fois que nous essayons de donner une condition, qui compare la valeur du champ ou de la colonne à NULL, cela ne fonctionne pas correctement.

Nous pouvons gérer les valeurs NULL en utilisant les trois choses.

  • IS NULL - L'opérateur renvoie true si la valeur de la colonne est NULL.

  • IS NOT NULL - L'opérateur renvoie true si la valeur de la colonne est NOT NULL.

  • <=> - L'opérateur compare les valeurs, ce qui (contrairement à l'opérateur =) est vrai même pour deux valeurs NULL.

Pour rechercher des colonnes NULL ou NOT NULL, utilisez respectivement IS NULL ou IS NOT NULL.

Exemple

Prenons un exemple où il y a une table tcount_tblqui contient deux colonnes, author et tutorial_count. Nous pouvons fournir des valeurs NULL au tutorial_count indique que l'auteur n'a même pas publié un seul tutoriel. Par conséquent, la valeur tutorial_count pour cet auteur respectif est NULL.

Exécutez les requêtes suivantes.

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

Utilisez la commande suivante pour afficher tous les enregistrements du tcount_tbl table.

select * from tcount_tbl;

Après l'exécution de la commande ci-dessus, vous recevrez la sortie suivante.

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

Pour trouver les enregistrements dans lesquels la colonne tutorial_count EST NULL, voici la requête.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Après l'exécution de la requête, vous recevrez la sortie suivante.

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

Pour trouver les enregistrements dans lesquels la colonne tutorial_count N'EST PAS NULL, voici la requête.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Après l'exécution de la requête, vous recevrez la sortie suivante.

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

HSQLDB - Programme JDBC

Voici le programme JDBC qui récupère les enregistrements séparément de la table tcount_tbl où le tutorial_ count est NULL et le tutorial_count est NOT NULL. Enregistrez le programme suivant dansNullValues.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);
      }
   }
}

Compilez et exécutez le programme ci-dessus à l'aide de la commande suivante.

\>javac NullValues.java
\>Java NullValues

Après l'exécution de la commande ci-dessus, vous recevrez la sortie suivante.

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