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?
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)
NULL
est une valeur spéciale en SQL. donc, pour null une propriété, Faites ceci:
UPDATE table SET column = NULL;
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;
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)
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.
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 !
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
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;
Utiliser is
au lieu de =
Par 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. 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