HSQLDB - Valores nulos

SQL NULL es un término que se utiliza para representar un valor perdido. Un valor NULO en una tabla es un valor en un campo que parece estar en blanco. Siempre que intentamos dar una condición, que compara el valor del campo o columna con NULL, no funciona correctamente.

Podemos manejar los valores NULL usando las tres cosas.

  • IS NULL - El operador devuelve verdadero si el valor de la columna es NULL.

  • IS NOT NULL - El operador devuelve verdadero si el valor de la columna NO es NULO.

  • <=> - El operador compara valores, que (a diferencia del operador =) es verdadero incluso para dos valores NULL.

Para buscar columnas que sean NULL o NOT NULL, use IS NULL o IS NOT NULL respectivamente.

Ejemplo

Consideremos un ejemplo donde hay una mesa tcount_tblque contiene dos columnas, autor y tutorial_count. Podemos proporcionar valores NULL al tutorial_count que indica que el autor no publicó ni un tutorial. Por lo tanto, el valor de tutorial_count para ese autor respectivo es NULL.

Ejecute las siguientes consultas.

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

Utilice el siguiente comando para mostrar todos los registros del tcount_tbl mesa.

select * from tcount_tbl;

Después de la ejecución del comando anterior, recibirá el siguiente resultado.

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

Para encontrar los registros donde la columna tutorial_count ES NULL, a continuación se muestra la consulta.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Después de la ejecución de la consulta, recibirá el siguiente resultado.

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

Para encontrar los registros donde la columna tutorial_count NO ES NULA, la siguiente es la consulta.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Después de la ejecución de la consulta, recibirá el siguiente resultado.

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

HSQLDB - Programa JDBC

Aquí está el programa JDBC que recupera los registros por separado de la tabla tcount_tbl donde tutorial_ count es NULL y tutorial_count NO es NULL. Guarde el siguiente programa enNullValues.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);
      }
   }
}

Compile y ejecute el programa anterior usando el siguiente comando.

\>javac NullValues.java
\>Java NullValues

Después de la ejecución del comando anterior, recibirá el siguiente resultado.

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