165 votes

Comment mettre à jour une colonne avec une valeur nulle

J'utilise mysql et j'ai besoin de mettre à jour une colonne avec une valeur nulle. J'ai essayé de nombreuses façons différentes et le mieux que j'ai obtenu est une chaîne vide.

Existe-t-il une syntaxe spéciale pour faire cela ?

5 votes

La colonne autorise-t-elle une valeur NULL ?

9 votes

UPDATE table SET column = NULL WHERE ... ; ne fonctionne pas ?

1 votes

Non, pas du tout. C'est vraiment bizarre.

257voto

Daniel Vassallo Points 142049

Pas de syntaxe particulière :

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)

1 votes

Merci Daniel. Je suis presque convaincu que ce problème peut se situer dans mon code d'application.

48voto

Gumbo Points 279147

NULL est une valeur spéciale en SQL. Donc pour annuler une propriété, faites ceci :

UPDATE table SET column = NULL;

0 votes

Maintenant, laissez-moi clarifier. Dans php, j'utilise PDO et je mets à jour par une requête.

1 votes

Le manuel MySQL indique que si la colonne n'autorise pas les valeurs NULL, le fait de lui attribuer la valeur NULL donnera la valeur par défaut du type de données (par exemple, une chaîne vide). Êtes-vous sûr à 100% que votre colonne autorise les valeurs NULL ? Pouvez-vous nous montrer le CREATE TABLE ?

0 votes

Je suis sûr à 1000%. J'ai vérifié deux fois. Laisse-moi regarder encore une fois.

24voto

Krishna Chaitu Points 154

Utilisez IS au lieu de = Ceci résoudra votre problème exemple de syntaxe :

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

11voto

Nitish Kumar Pal Points 586

Dans les réponses ci-dessus, de nombreuses façons et répétitions ont été suggérées pour la même chose. J'ai continué à chercher une réponse comme mentionné dans la question mais je n'ai pas pu la trouver ici.

Une autre façon de formuler la question ci-dessus "mettre à jour une colonne avec une valeur nulle". pourrait être "Mettre à jour toutes les lignes de la colonne avec une valeur nulle".

Dans une telle situation, les travaux suivants sont effectués

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

is également is not fonctionne dans mysql

7voto

user2151910 Points 81

N'oubliez pas de vérifier si votre colonne peut être nulle. Vous pouvez le faire en utilisant

mysql> desc my_table;

Si votre colonne ne peut pas être nulle, lorsque vous définissez la valeur sur null, elle sera la valeur coulée sur celle-ci.

Voici un exemple

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X