Обработка значение NULL MySQL
Мы уже знаем, MySQL с помощью команды SQL SELECT с ИНЕКЕ для чтения данных в таблице данных, но поля критериев запроса при условии, если NULL, то команда может не работать должным образом, когда.
Чтобы справиться с этим делом, MySQL предоставляет три основных операторов:
- IS NULL: Если значение столбца равно нулю, то оператор возвращает истину.
- IS NOT NULL: Когда значение столбца не NULL, оператор возвращает истину.
- <=>: Операторы сравнения (= отличные от оператора) и возвращает истину при сравнении двух значение NULL.
О NULL операция сравнения состояние является особенным. Вы не можете использовать = NULL или! = NULL найти NULL значения в столбце.
В MySQL NULL значения сравнить с любым другим значением (даже NULL) всегда возвращает ложь, то есть, NULL = NULL возвращает ложь.
MySQL NULL Погрузочно-разгрузочные работы с использованием IS NULL и IS NOT NULL оператор.
NULL значения в командной строке
В следующем примере предполагается, что база данных w3big таблиц tcount_tbl содержащие два w3big_author и w3big_count, w3big_count установленные вставки NULL значения.
примеров
Попробуйте следующие примеры:
root@host# mysql -u root -p password; Enter password:******* mysql> use w3big; Database changed mysql> create table tcount_tbl -> ( -> w3big_author varchar(40) NOT NULL, -> w3big_count INT -> ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO tcount_tbl -> (w3big_author, w3big_count) values ('mahran', 20); mysql> INSERT INTO tcount_tbl -> (w3big_author, w3big_count) values ('mahnaz', NULL); mysql> INSERT INTO tcount_tbl -> (w3big_author, w3big_count) values ('Jen', NULL); mysql> INSERT INTO tcount_tbl -> (w3big_author, w3big_count) values ('Gill', 20); mysql> SELECT * from tcount_tbl; +-----------------+----------------+ | w3big_author | w3big_count | +-----------------+----------------+ | mahran | 20 | | mahnaz | NULL | | Jen | NULL | | Gill | 20 | +-----------------+----------------+ 4 rows in set (0.00 sec) mysql>
В следующем примере вы можете видеть = и = оператор не работает !:
mysql> SELECT * FROM tcount_tbl WHERE w3big_count = NULL; Empty set (0.00 sec) mysql> SELECT * FROM tcount_tbl WHERE w3big_count != NULL; Empty set (0.01 sec)
Найти таблицу данных w3big_count ли NULL столбец, вы должны использовать IS NULL и IS NOT NULL, следующие примеры:
mysql> SELECT * FROM tcount_tbl -> WHERE w3big_count IS NULL; +-----------------+----------------+ | w3big_author | w3big_count | +-----------------+----------------+ | mahnaz | NULL | | Jen | NULL | +-----------------+----------------+ 2 rows in set (0.00 sec) mysql> SELECT * from tcount_tbl -> WHERE w3big_count IS NOT NULL; +-----------------+----------------+ | w3big_author | w3big_count | +-----------------+----------------+ | mahran | 20 | | Gill | 20 | +-----------------+----------------+ 2 rows in set (0.00 sec)
Значение NULL обработка сценария использования PHP
PHP скрипты вы можете, если ... Else для обработки, если переменная пуста, и генерирует соответствующий условный оператор.
Следующие примеры установить переменной $ w3big_count PHP, а затем использовать переменную с таблицей данных w3big_count полей сравнения:
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } if( isset($w3big_count )) { $sql = 'SELECT w3big_author, w3big_count FROM tcount_tbl WHERE w3big_count = $w3big_count'; } else { $sql = 'SELECT w3big_author, w3big_count FROM tcount_tbl WHERE w3big_count IS $w3big_count'; } mysql_select_db('w3big'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Author:{$row['w3big_author']} <br> ". "Count: {$row['w3big_count']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>