HSQLDB - Valores Nulos

SQL NULL é um termo usado para representar um valor ausente. Um valor NULL em uma tabela é um valor em um campo que parece estar em branco. Sempre que tentamos fornecer uma condição que compara o valor do campo ou coluna com NULL, ela não funciona corretamente.

Podemos lidar com os valores NULL usando as três coisas.

  • IS NULL - O operador retorna verdadeiro se o valor da coluna for NULL.

  • IS NOT NULL - O operador retorna verdadeiro se o valor da coluna for NOT NULL.

  • <=> - O operador compara valores, o que (ao contrário do operador =) é verdadeiro mesmo para dois valores NULL.

Para procurar colunas NULL ou NOT NULL, use IS NULL ou IS NOT NULL respectivamente.

Exemplo

Vamos considerar um exemplo onde há uma mesa tcount_tblque contém duas colunas, autor e tutorial_count. Podemos fornecer valores NULL para o tutorial_count indica que o autor não publicou nem mesmo um tutorial. Portanto, o valor tutorial_count para esse respectivo autor é NULL.

Execute as seguintes 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);

Use o seguinte comando para exibir todos os registros do tcount_tbl tabela.

select * from tcount_tbl;

Após a execução do comando acima, você receberá a seguinte saída.

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

Para localizar os registros em que a coluna tutorial_count É NULL, a seguir está a consulta.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

Após a execução da consulta, você receberá a seguinte saída.

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

Para localizar os registros em que a coluna tutorial_count NÃO É NULL, a seguir está a consulta.

SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;

Após a execução da consulta, você receberá a seguinte saída.

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

HSQLDB - Programa JDBC

Aqui está o programa JDBC que recupera os registros separadamente da tabela tcount_tbl em que tutorial_ count é NULL e tutorial_count NÃO é NULL. Salve o seguinte programa emNullValues.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 e execute o programa acima usando o seguinte comando.

\>javac NullValues.java
\>Java NullValues

Após a execução do comando acima, você receberá a seguinte saída.

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