[sql-server] 열 변경 : null ~ not null

nullable 정수 열이 여러 개인 테이블이 있습니다. 이것은 여러 가지 이유로 바람직하지 않으므로 모든 null을 0으로 업데이트 한 다음이 열을로 설정하려고 NOT NULL합니다. null을로 변경하는 것 외에도 0데이터를 보존해야합니다.

열 을 ” ” 로 변경 하기 위해 특정 SQL 구문 을 찾고 있습니다. 널을 포함하지 않도록 데이터가 갱신되었다고 가정하십시오.ColumnAnot null

사용하여 SQL 서버 2000 .



답변

먼저 모든 현재 NULL값을 사라지게하십시오.

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

그런 다음 “NULLs”를 허용하지 않도록 테이블 정의를 업데이트하십시오.

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


답변

나는 같은 문제가 있었지만 필드는 기본적으로 null로 설정되었고 이제는 0으로 기본값을 설정하려고합니다. mdb의 솔루션 뒤에 한 줄을 더 추가해야했습니다.

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


답변

다음 두 단계로 수행해야합니다.

  1. 열에 널이 없도록 테이블을 업데이트하십시오.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. 테이블의 속성을 변경하여 열 속성 변경
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL


답변

Oracle 11g의 경우 다음과 같이 열 속성을 변경할 수있었습니다.

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

그렇지 않으면 abatichev의 대답은 좋았습니다. 변경을 반복 할 수 없습니다-적어도 SQL Developer에서는 열이 이미 null이 아니라고 불평합니다.


답변

이것은 나를 위해 일했다 :

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


답변

열이 고유 식별자가 아닌 한

UPDATE table set columnName = 0 where columnName is null

그때

테이블을 변경하고 필드를 널이 아닌 값으로 설정하고 기본값 0을 지정하십시오.


답변

이것은 더 단순 해 보이지만 Oracle에서만 작동합니다.

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

또한이를 통해 열을 변경하는 것만이 아니라 열을 추가 할 수도 있습니다. 이 예에서는 값이 null 인 경우 기본값 (0)으로 업데이트됩니다.