Question Modifier une colonne: null à non null


J'ai une table qui a plusieurs colonnes entières nullable. Ceci est indésirable pour plusieurs raisons, donc je cherche à mettre à jour tous les NULL à 0 et ensuite mettre ces colonnes à NOT NULL. En plus de changer les valeurs nulles 0, les données doivent être conservées.

Je cherche le syntaxe SQL spécifique modifier une colonne (appelez-le ColumnA) à "not null"Supposons que les données ont été mises à jour pour ne pas contenir de valeurs nulles.

En utilisant Serveur SQL 2000.


1023
2018-03-27 13:24


origine


Réponses:


D'abord, faites disparaître toutes les valeurs NULL actuelles:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Ensuite, mettez à jour la définition de la table pour interdire les valeurs NULL:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

1732
2018-03-27 13:30



J'ai eu le même problème, mais le champ utilisé par défaut à null, et maintenant je veux par défaut à 0. Cela a nécessité l'ajout d'une ligne après la solution de mdb:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

47
2018-06-15 20:45



Vous devrez le faire en deux étapes:

  1. Mettez à jour la table afin qu'il n'y ait pas de null dans la colonne.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. Modifier la table pour changer la propriété de la colonne
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

29
2018-03-27 13:34



Pour Oracle 11g, j'ai été capable de changer l'attribut de la colonne comme suit:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

Sinon, la réponse d'abatichev semblait bonne. Vous ne pouvez pas répéter l'alter - il se plaint (au moins dans SQL Developer) que la colonne n'est déjà pas nulle.


21
2017-09-17 21:13



Tant que la colonne n'est pas un identifiant unique

UPDATE table set columnName = 0 where columnName is null

alors

Modifiez la table et définissez le champ sur non null et spécifiez une valeur par défaut de 0


16
2018-03-27 13:26



Cela a fonctionné pour moi:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

15
2018-06-05 13:00



cela semble plus simple, mais ne fonctionne que sur Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

En outre, avec cela, vous pouvez également ajouter des colonnes, pas seulement le modifier. Il met à jour à la valeur par défaut (0) dans cet exemple, si la valeur était null.


5
2018-03-04 07:55



En cas de FOREIGN KEY CONSTRAINT... il y aura un problème si '0' n'est pas présent dans la colonne de la table de clé primaire. La solution pour cela est ...

ÉTAPE 1:

Désactivez toutes les contraintes en utilisant ce code:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

ÉTAPE 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

ÉTAPE 3:

Activer toutes les contraintes en utilisant ce code:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

2
2017-11-27 17:13



Dans mon cas, j'ai eu des difficultés avec les réponses affichées. J'ai fini par utiliser ce qui suit:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

Changement VARCHAR(200) à votre type de données, et éventuellement modifier la valeur par défaut.

Si vous n'avez pas de valeur par défaut, vous aurez un problème pour effectuer cette modification, car la valeur par défaut serait null créant un conflit.


2
2018-01-26 19:39



Rendre la colonne non nulle et ajouter la valeur par défaut peut également être fait dans l'interface graphique de SSMS.

  1. Comme d'autres l'ont déjà dit, vous ne pouvez pas définir "non null" jusqu'à ce que les données existantes ne sont pas "nulles" comme ceci:

UPDATE myTable SET myColumn = 0

  1. Une fois cela fait, avec la table en mode design (clic droit sur tableau et cliquez sur "design view"), vous pouvez simplement décocher la Permettre Nuls colonnes comme ça:

enter image description here

  1. Toujours en mode Création avec la colonne sélectionnée, vous pouvez voir la Propriétés de la colonne dans la fenêtre ci-dessous et définissez la valeur par défaut à 0 là aussi bien comme:

enter image description here


1
2017-12-15 03:14



Pour le javaDB intégré inclus dans le JDK (la distribution prise en charge par Oracle du Derby Apache), le dessous a fonctionné pour moi

alter table [table name] alter column [column name] not null;

0
2018-06-13 00:45