web-dev-qa-db-fra.com

Comment mettre à jour la colonne avec une valeur nulle

J'utilise mysql et j'ai besoin de mettre à jour une colonne avec une valeur nulle. J'ai essayé autant de 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 faire cela?

123
jim

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)
187
Daniel Vassallo

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

UPDATE table SET column = NULL;
35
Gumbo

Utilisez IS au lieu de = Cela résoudra votre problème.

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
8
Krishna Chaitu

N'oubliez pas de regarder si votre colonne peut être nulle. 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, ce sera la valeur de conversion qui lui est attribuée.

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
Thiago Mata

Pour ceux confrontés à un problème similaire, j'ai constaté que lors de la simulation d'une requête SET = NULL, PHPMyAdmin générait une erreur. C'est un hareng rouge .. il suffit d'exécuter la requête et tout ira bien.

4
Daniel Dunn

Si vous souhaitez définir la valeur null à l'aide de la valeur de colonne set de requête de mise à jour sur NULL (sans les guillemets)

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

1
mayank nigam

Une autre raison possible pour la chaîne vide, plutôt que true null, est que le champ est un index ou fait partie d'un index. Cela m'est arrivé: en utilisant phpMyAdmin, j'ai édité la structure d'un champ dans l'une de mes tables pour autoriser NULLs en cochant la case " Null " puis en cliquant sur le bouton " Enregistrer ". "Le prix de la table a été modifié avec succès" était affiché. J'ai donc supposé que le changement s'était produit - ce n'est pas le cas. Après avoir effectué unUPDATEpour définir tous ces champs surNULL, ils étaient réglés sur chaînes vides, aussi j’ai jeté un œil à la structure de la table et Nous avons vu que la colonne " Null " de ce champ était définie sur " no ". C'est alors que j'ai compris que le champ faisait partie de la clé primaire

1
ReverseEMF

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

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

Bien sûr, vous devriez d’abord vérifier que ces valeurs sont bien "" avec quelque chose comme:

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

utilisez is au lieu de =

Exemple: Select * from table_name where column is null

0
Cyber Gangster

Dans les réponses ci-dessus, de nombreuses façons et répétitions ont été suggérées pour la même chose… .. Je cherchais sans cesse une réponse, comme indiqué précédemment, mais je ne pouvais pas la trouver ici.

Mais en face de la question ci-dessus "mettre à jour une colonne avec une valeur nulle" Peut-être "METTRE À JOUR TOUTES LES RANGÉES DE LA COLONNE À NULL"

Dans une telle situation, travaux suivants

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

is ainsi is not fonctionne dans mysql

0
Nitish Kumar Pal

si vous suivez 

UPDATE table SET name = NULL

alors le nom est "" pas NULL IN MYSQL signifie que votre requête 

SELECT * FROM table WHERE name = NULL ne fonctionne pas ou ne vous déçois pas

0
Steven Spielberg