Processamento de valores MySQL NULL
Nós já sabemos MySQL usando o comando SQL SELECT com a cláusula WHERE para ler os dados na tabela de dados, mas os campos de critérios de consulta fornecido quando NULL, o comando pode não funcionar corretamente quando.
Para lidar com este caso, MySQL fornece três principais operadores:
- IS NULL: Quando o valor da coluna é NULL, o operador retorna verdadeiro.
- IS NOT NULL: Quando o valor da coluna não é NULL, o operador retorna verdadeiro.
- <=>: Operadores de comparação (= diferente do operador) e retorna verdadeiro quando se comparam os dois valor é NULL.
operação de comparação condição Sobre NULL é especial. Você não pode usar = NULL ou! = NULL localizar valores nulos na coluna.
No MySQL, valores NULL comparar com qualquer outro valor (mesmo NULL) sempre retorna false, ou seja, NULL = NULL retorna false.
MySQL o tratamento de NULL usando o IS NULL e IS NOT NULL operador.
valores nulos em prompt de comando
O exemplo a seguir pressupõe que o banco de dados w3big tabelas tcount_tbl contendo dois w3big_author e w3big_count, w3big_count estabelecidos valores nulos de inserção.
Exemplos
Tente os seguintes exemplos:
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>
O exemplo a seguir você pode ver = e operador = não funciona !:
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)
Encontrar a tabela de dados w3big_count se a coluna é NULL, você deve usar o IS NULL e IS NOT NULL, os seguintes exemplos:
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)
Use PHP valor NULL processamento do script
scripts PHP você pode se ... else de lidar se a variável é vazia, e gera a declaração condicional correspondente.
Os exemplos a seguir definido $ variável w3big_count PHP, em seguida, usar a variável com a tabela de dados w3big_count campos comparação:
<?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); ?>