Comment mettre à jour la colonne avec une valeur null

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

Y a-t-il une syntaxe spéciale pour le faire?

117
demandé sur linuxbuild 2010-10-06 12:08:29

11 réponses

Pas de syntaxe spéciale:

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)
174
répondu Daniel Vassallo 2010-10-06 08:42:05

NULL est une valeur spéciale en SQL. donc, pour null une propriété, Faites ceci:

UPDATE table SET column = NULL;
31
répondu Gumbo 2010-10-06 08:11:33

Utiliser IS au lieu de = Cela permettra de résoudre votre problème exemple de syntaxe:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
7
répondu Krishna Chaitu 2016-11-25 05:44:01

N'oubliez pas de regarder si votre colonne peut être null. Vous pouvez le faire en utilisant

mysql> desc my_table;

Si votre colonne ne peut pas être null, lorsque vous définissez la valeur sur null, elle sera la valeur de conversion.

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)
6
répondu Thiago Mata 2014-04-08 21:01:53

Pour ceux qui font face à un problème similaire, j'ai trouvé que lors de la 'simulation' d'une requête SET = NULL, PHPMyAdmin lancerait une erreur. C'est un leurre.. il suffit d'exécuter la requête et tout ira bien.

4
répondu Daniel Dunn 2016-02-19 16:47:59

Une Autre raison possible pour la chaîne vide, plutôt qu'un true null, c'est que le champ est un indice ou un indice. Cela m'est arrivé: en utilisant phpMyAdmin, j'ai modifié la structure d'un champ dans l'une de mes tables pour autoriser NULLs en cochant la case "Null "puis en appuyant sur le bouton" Save". " La tarification de la Table a été modifiée avec succès " a été affichée, donc j'ai supposé que le changement s'est produit - ce n'est pas le cas. UPDATE pour définir tous ces champs sur NULL , ils étaient plutôt définis sur chaînes vides , donc j'ai regardé à nouveau la structure de la table et j'ai vu que la colonne" Null " pour ce champ était définie sur 'no'. C'est alors que j'ai réalisé que le champ faisait partie de la clé primaire !

1
répondu ReverseEMF 2013-12-06 00:52:27

Si vous souhaitez définir une valeur null à l'aide de la requête de mise à jour, définissez la valeur de la colonne sur NULL (sans guillemets) mise à jour tablename set columnname = NULL

Cependant, si vous modifiez directement la valeur du champ dans mysql workbench, utilisez la touche (Esc + Suppr) pour insérer une valeur null dans la colonne sélectionnée

1
répondu mayank nigam 2016-05-16 09:43:21

Si vous suivez

UPDATE table SET name = NULL

Alors name est "" not NULL dans MYSQL signifie votre requête

SELECT * FROM table WHERE name = NULL Ne pas travailler ou vous décevoir

0
répondu 2010-10-06 08:27:35

Je soupçonne que le problème ici est que les guillemets ont été entrés en tant que littéraux dans votre valeur de chaîne. Vous pouvez définir ces colonnes sur null en utilisant:

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

Vous devriez bien sûr d'abord vérifier que ces valeurs sont bien "" avec quelque chose comme:

SELECT DISTINCT(col) FROM table WHERE length(col)<3;
0
répondu Dylan 2013-01-16 08:29:15

Utiliser is au lieu de =

Par exemple: Select * from table_name where column is null

0
répondu Cyber Gangster 2013-10-24 09:40:31

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é est la question mais je n'ai pas pu trouver ici.

Mais à l'opposé de la question ci-dessus " mettre à jour une colonne avec une valeur nulle" Pourrait être "mettre à jour toutes les lignes de la colonne à NULL"

Dans une telle situation, les travaux suivants

> update table_name

> set field_name = NULL

> where field_name is not NULL;

is aussi bien is not fonctionne dans mysql

0
répondu Nitish Kumar Pal 2018-07-24 06:39:23