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?
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)
NULL
est une valeur spéciale en SQL. Donc pour annuler une propriété, faites ceci:
UPDATE table SET column = NULL;
Utilisez IS
au lieu de =
Cela résoudra votre problème.
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
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)
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.
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.
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!
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;
utilisez is
au lieu de =
Exemple: Select * from table_name where column is null
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
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