1314

Null 許容の整数列がいくつかあるテーブルがあります。これはいくつかの理由で望ましくないため、すべての null を 0 に更新してから、これらの列を に設定しようとしていますNOT NULL。null を に変更する以外に0、データを保持する必要があります。

列を変更するための特定の SQL 構文を探しています (それを呼び出しますColumnA) を " not null" に変更します。null を含まないようにデータが更新されているとします。

SQL サーバー 2000を使用します。

4

14 に答える 14

2133

まず、現在のNULL値をすべて非表示にします。

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

次に、「NULL」を許可しないようにテーブル定義を更新します。

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL
于 2009-03-27T13:30:09.223 に答える
61

私は同じ問題を抱えていましたが、フィールドはデフォルトで null でしたが、デフォルトで 0 にしたいと思います。それには、mdb のソリューションの後にもう 1 行追加する必要がありました。

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];
于 2012-06-15T20:45:23.720 に答える
40

次の 2 つの手順で行う必要があります。

  1. 列にヌルがないように表を更新してください。
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. テーブルを変更して、列のプロパティを変更します
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL
于 2009-03-27T13:34:29.637 に答える
29

Oracle 11g では、列属性を次のように変更できました。

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

そうでなければ、アバティチェフの答えは良さそうだった。変更を繰り返すことはできません-列がすでにnullではないことを(少なくともSQL Developerでは)不平を言います。

于 2012-09-17T21:13:23.727 に答える
18

これは私のために働いた:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;
于 2012-06-05T13:00:20.240 に答える
15

列が一意の識別子でない限り

UPDATE table set columnName = 0 where columnName is null

それで

テーブルを変更し、フィールドを null 以外に設定し、デフォルト値 0 を指定します

于 2009-03-27T13:26:39.687 に答える
4

これは簡単に思えますが、Oracleでのみ機能します。

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

さらに、これを使用すると、列を変更するだけでなく、列を追加することもできます。この例では、値がnullの場合、デフォルト値(0)に更新されます。

于 2012-03-04T07:55:36.317 に答える
1

列を null 以外にしてデフォルトを追加することも、SSMS GUI で行うことができます。

  1. 他の人がすでに述べているように、既存のすべてのデータが次のように「非 null」になるまで、「非 null」を設定することはできません。

UPDATE myTable SET myColumn = 0

  1. それが完了したら、テーブルをデザイン ビューで (テーブルを右クリックして [デザイン ビュー] をクリック)、次のように[Allow Nulls]列のチェックを外すことができます。

ここに画像の説明を入力

  1. 列が選択されたデザイン ビューで、 下のウィンドウに [列のプロパティ] が表示され、次のようにデフォルトを 0 に設定できます。

ここに画像の説明を入力

于 2015-12-15T03:14:40.910 に答える
0
  1. 最初に、not に変更する列に null 値がないことを確認して、column's_name が null のテーブルから count(*) を選択

  2. 欠損値を代入します。null を空の文字列、0、平均値、中央値、または補間値に置き換えることができます。それは、バック フィル戦略またはフォワード フィル戦略によって異なります。

  3. 列の値を一意にする必要があるか、一意でない必要があるかを決定します。一意にする必要がある場合は、一意の制約を追加してください。それ以外の場合は、パフォーマンスが十分かどうか、またはインデックスを追加する必要があるかどうかを確認してください。

于 2021-04-30T20:51:19.117 に答える
0

次のSQLを使用して、既存のDB列の定義を変更できます。

ALTER TABLE mytable modify mycolumn datatype NOT NULL;
于 2018-11-12T09:03:48.927 に答える