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?
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?
Respuestas:
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)
NULL
es un valor especial en SQL. Entonces, para anular una propiedad, haga esto:
UPDATE table SET column = NULL;
Usar en IS
lugar de =
Esto resolverá la sintaxis de ejemplo de su problema:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
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)
Para aquellos que enfrentan un problema similar, descubrí que al 'simular' una SET = NULL
consulta, PHPMyAdmin arrojaría un error. Es un arenque rojo ... simplemente ejecute la consulta y todo estará bien.
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;
is
también is not
funciona en mysql
usar en is
lugar de=
P.ej: Select * from table_name where column is null
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 .
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
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
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;