Hemos visto SQL SELECCIONE comando con DÓNDE una sugerencia para obtener datos de una tabla MySQLi, pero cuando intentamos dar una condición que compare el valor de un campo o columna con CERO, no funciona como se esperaba.
Para manejar esta situación, MySQLi proporciona tres declaraciones
NULO : el operador devuelve verdadero si el valor de la columna es NULL.
NO VACÍO : el operador devuelve verdadero si el valor de la columna no es NULL.
<=> Operador: compara valores, que (a diferencia del operador =) es verdadero incluso para dos valores NULL.
Las condiciones que involucran NULL son especiales. No puede usar = NULL o! = NULL para buscar valores NULL en columnas. Tales comparaciones siempre fallan porque es imposible saber si son ciertas o no. Incluso NULL = NULL no funciona.
Para buscar columnas que sean o no NULL, use IS NULL o IS NOT NULL.
Supongamos una mesa tutorials_bks en la base de datos TUTORIALS y contiene dos columnas Identificación y nombredonde el nombre NULL indica que el valor es desconocido –
Pruebe los siguientes ejemplos:
[email protected]# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> INSERT INTO tutorials_bks (book) values(''); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO tutorials_bks (book) values(''); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO tutorials_bks (book) values(''); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO tutorials_bks (book) values('NULL'); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO tutorials_bks (book) values('NULL'); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO tutorials_bks (book) values('NULL'); Query OK, 1 row affected (0.08 sec) +----+---------+ | id | book | +----+---------+ | 1 | java | | 2 | java | | 3 | html | | 4 | c++ | | 5 | Android | | 6 | | | 7 | | | 8 | | | 9 | NULL | | 10 | NULL | | 11 | NULL | +----+---------+ 11 rows in set (0.00 sec) mysql>
Para encontrar registros donde la columna de nombre es NULL o no NULL, las consultas deben escribirse así:
mysql> SELECT * FROM tutorials_bks WHERE book = "null"; +----+------+ | id | book | +----+------+ | 9 | NULL | | 10 | NULL | | 11 | NULL | +----+------+ 3 rows in set (0.00 sec) mysql> SELECT * FROM tutorials_bks WHERE book ! = "null"; +----+---------+ | id | book | +----+---------+ | 1 | java | | 2 | java | | 3 | html | | 4 | c++ | | 5 | Android | | 6 | | | 7 | | | 8 | | +----+---------+ 8 rows in set (0.00 sec) mysql> SELECT * FROM tutorials_bks WHERE book = ""; +----+------+ | id | book | +----+------+ | 6 | | | 7 | | | 8 | | +----+------+ 3 rows in set (0.01 sec)
puedes usar si todavía condición para preparar una consulta basada en un valor nulo.
El siguiente ejemplo usa el valor tutorial_count externamente y luego lo compara con el valor disponible en la tabla.
<?php $dbhost="localhost:3036"; $dbuser="root"; $dbpass="rootpassword"; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: '. mysql_error()); } if( isset($tutorial_count )) { $sql="SELECT tutorial_author, tutorial_count FROM tcount_tbl WHERE tutorial_count = $tutorial_count"; } else { $sql="SELECT tutorial_author, tutorial_count FROM tcount_tbl WHERE tutorial_count IS $tutorial_count"; } mysql_select_db('TUTORIALS'); $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['tutorial_author']} <br> ". "Count: {$row['tutorial_count']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfullyn"; mysql_close($conn); ?>
🚫