Cómo actualizar una columna con valor nulo


148

Estoy usando mysql y necesito actualizar una columna con un valor nulo. He intentado esto de muchas maneras diferentes y lo mejor que he conseguido es una cadena vacía.

¿Hay una sintaxis especial para hacer esto?


44
¿La columna permite un valor NULL?
Poke

8
ACTUALIZAR la tabla SET column = NULL WHERE ...; ¿No funciona?

1
No, en absoluto. Es realmente extraño
Jim

Respuestas:


226

Sin sintaxis especial:

CREATE TABLE your_table (some_id int, your_column varchar(100));

INSERT INTO your_table VALUES (1, 'Hello');

UPDATE your_table
SET    your_column = NULL
WHERE  some_id = 1;

SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
|       1 | NULL        |
+---------+-------------+
1 row in set (0.00 sec)

Gracias Daniel Estoy un poco convencido de que este problema puede estar en mi código de aplicación
Jim

42

NULLes un valor especial en SQL. Entonces, para anular una propiedad, haga esto:

UPDATE table SET column = NULL;

Ahora, déjame aclarar. A través de php estoy usando PDO y actualizando a través de una consulta.
Jim

1
El manual de MySQL establece que si la columna no permite valores NULL, establecerlo en NULL dará como resultado el valor predeterminado para el tipo de datos (por ejemplo, una cadena vacía). ¿Es 100% que su columna permite NULL? ¿Nos puede mostrar la CREAR TABLA?

Estoy 1000% seguro. Lo he comprobado dos veces. Déjame mirar una vez más.
Jim

Sí, de hecho es nulo. Puedo ver el NULL producido por mi software final en los datos que deberían ser nulos.
Jim

20

Usar en ISlugar de = Esto resolverá la sintaxis de ejemplo de su problema:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

6

Recuerde mirar si su columna puede ser nula. Puedes hacerlo usando

mysql> desc my_table;

Si su columna no puede ser nula, cuando establezca el valor en nulo, será el valor de conversión.

Aquí un ejemplo

mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name        |
+-----+-------------+
|   0 | without num |
|   2 |             |
+-----+-------------+
2 rows in set (0.00 sec)

mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)

4

Para aquellos que enfrentan un problema similar, descubrí que al 'simular' una SET = NULLconsulta, PHPMyAdmin arrojaría un error. Es un arenque rojo ... simplemente ejecute la consulta y todo estará bien.


Gracias, estaba buscando porque PHPMyAdmin afirmó que había una palabra clave no reconocida cerca de NULL. Después de leer su respuesta, ejecuté la consulta y se ejecutó según lo previsto.
dading84

4

En las respuestas anteriores, se han sugerido muchas formas y repeticiones para lo mismo. Seguí buscando una respuesta como se mencionó, pero no pude encontrarla aquí.

Pero al contrario de la pregunta anterior "actualizar una columna con un valor nulo" podría ser "ACTUALIZAR TODAS LAS FILAS DE LA COLUMNA A NULL"

En tal situación siguiendo trabajos

update table_name
set field_name = NULL
where field_name is not NULL;

istambién is notfunciona en mysql



1

Otra posible razón para la cadena vacía, en lugar de un verdadero nulo es que el campo es un índice o es parte de un índice. Esto me sucedió a mí: usando phpMyAdmin, edité la estructura de un campo en una de mis tablas para permitir NULLs marcando la casilla de verificación " Nulo " y luego presionando el botón " Guardar ". Aparece el mensaje " El precio de la tabla se ha modificado correctamente ", por lo que supuse que el cambio ocurrió, no fue así. Después de hacer una ACTUALIZACIÓN para establecer todos esos campos en NULL , en su lugar, se configuraron en cadenas vacías , así que volví a mirar la estructura de la tabla y vi que el " Nulo"la columna para ese campo se estableció en ' no '. Fue entonces cuando me di cuenta de que el campo era parte de la clave principal .


1

Si desea establecer un valor nulo utilizando la consulta de actualización, establezca el valor de columna en NULL (sin comillas), actualice el nombre de la tabla set columnname = NULL

Sin embargo, si está editando directamente el valor del campo dentro de mysql workbench, use la tecla (Esc + del) para insertar un valor nulo en la columna seleccionada


0

Si tu sigues

UPDATE table SET name = NULL

entonces el nombre es "" no NULL IN MYSQL significa su consulta

SELECT * FROM table WHERE name = NULL no trabajes ni te decepciones


0

Sospecho que el problema aquí es que las citas se ingresaron como literales en su valor de cadena. Puede establecer estas columnas en nulas utilizando:

UPDATE table SET col=NULL WHERE length(col)<3;

Por supuesto, primero debe verificar que estos valores son "" de hecho con algo como:

SELECT DISTINCT(col) FROM table WHERE length(col)<3;

0

si establece NULL para todos los registros intente esto:

UPDATE `table_name` SET `column_you_want_set_null`= NULL

O simplemente establezca NULL para registros especiales use WHERE

UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value' 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.