SQL NULL — это термин, используемый для обозначения пропущенного значения. Значение NULL в таблице — это значение в поле, которое кажется пустым. Всякий раз, когда мы пытаемся дать условие, которое сравнивает значение поля или столбца со значением NULL, оно не работает должным образом.
Мы можем обрабатывать значения NULL, используя три вещи.
-
IS NULL — оператор возвращает true, если значение столбца равно NULL.
-
IS NOT NULL — оператор возвращает true, если значение столбца NOT NULL.
-
<=> — Оператор сравнивает значения, которые (в отличие от оператора =) верны даже для двух значений NULL.
IS NULL — оператор возвращает true, если значение столбца равно NULL.
IS NOT NULL — оператор возвращает true, если значение столбца NOT NULL.
<=> — Оператор сравнивает значения, которые (в отличие от оператора =) верны даже для двух значений NULL.
Для поиска столбцов, которые имеют значение NULL или NOT NULL, используйте IS NULL или IS NOT NULL соответственно.
пример
Давайте рассмотрим пример, где есть таблица tcount_tbl, которая содержит два столбца, author и tutorial_count. Мы можем предоставить значения NULL, чтобы tutorial_count указывал, что автор не опубликовал ни одного учебника. Следовательно, значение tutorial_count для этого соответствующего автора равно NULL.
Выполните следующие запросы.
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);
Используйте следующую команду, чтобы отобразить все записи из таблицы tcount_tbl .
select * from tcount_tbl;
После выполнения вышеуказанной команды вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Abdul S | 20 | | Ajith kumar | 5 | | Jen | NULL | | Bavya kanna | 8 | | mahran | NULL | | John Poul | 10 | | Sathya Murthi | 6 | +-----------------+----------------+
Чтобы найти записи, в которых столбец tutorial_count равен NULL, выполните запрос.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;
После выполнения запроса вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Jen | NULL | | mahran | NULL | +-----------------+----------------+
Чтобы найти записи, в которых столбец tutorial_count не равен NULL, выполните запрос.
SELECT * FROM tcount_tbl WHERE tutorial_count IS NOT NULL;
После выполнения запроса вы получите следующий вывод.
+-----------------+----------------+ | author | tutorial_count | +-----------------+----------------+ | Abdul S | 20 | | Ajith kumar | 5 | | Bavya kanna | 8 | | John Poul | 10 | | Sathya Murthi | 6 | +-----------------+----------------+
HSQLDB — Программа JDBC
Вот программа JDBC, которая извлекает записи отдельно из таблицы tcount_tbl, где tutorial_ count равно NULL, а tutorial_count NOT NULL. Сохраните следующую программу в NullValues.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); } } }
Скомпилируйте и выполните вышеуказанную программу, используя следующую команду.
\>javac NullValues.java \>Java NullValues
После выполнения вышеуказанной команды вы получите следующий вывод.