Latest web development tutorials

procesamiento de valores NULL MySQL

Ya sabemos MySQL utilizando el comando SELECT de SQL con la cláusula WHERE para leer los datos de la tabla de datos, pero los campos de criterios de consulta proporcionada cuando NULL, el comando puede no funcionar correctamente cuando.

Para manejar este caso, MySQL proporciona tres operadores principales:

  • IS NULL: Cuando el valor de la columna es NULL, el operador devuelve true.
  • NO ES NULO: Cuando el valor de la columna no es NULL, el operador devuelve true.
  • <=>: Los operadores de comparación (= diferentes del operador) y devuelve verdadero cuando se comparan los dos valores es NULL.

operación de comparación sobre la condición NULL es especial. No se puede utilizar = NULL o! = NULL encontrar valores NULL en la columna.

En MySQL, los valores NULL se comparan con cualquier otro valor (incluso NULL) siempre devuelve falsa, es decir, NULL = NULL devuelve false.

MySQL manipulación utilizando NULL el IS NULL e IS NOT NULL operador.


Los valores NULL en la línea de comandos

En el siguiente ejemplo se supone que la base de datos w3big tablas tcount_tbl que contiene dos w3big_author y w3big_count, w3big_count establecidos los valores NULL de inserción.

Ejemplos

Prueba los siguientes ejemplos:

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>

En el siguiente ejemplo se puede ver = = y el operador no 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)

Encuentra la tabla de datos w3big_count si la columna es NULL, se debe utilizar el IS NULL e IS NOT NULL, los siguientes ejemplos:

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)

valor NULL procesamiento Usar script PHP

scripts PHP se puede hacer si ... Else manejar si una variable está vacía, y genera la correspondiente sentencia condicional.

Los siguientes ejemplos establecen la variable $ w3big_count PHP, a continuación, utilizar la variable con la tabla de datos w3big_count zonas de comparación:

<?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);
?>