특정 열에서 거짓 다음과 같은 열이있는 테이블을 설정합니다. 이 열에는 모든 행에 null
이 포함되어 있습니다.나는 모든 행
ID Name IsConfirmed
1 test1 null
2 test2 null
나는 T-SQL을 사용하여 테이블의 모든 행에 IsConfirmed
열에 false
를 설정하는 방법?
감사
특정 열에서 거짓 다음과 같은 열이있는 테이블을 설정합니다. 이 열에는 모든 행에 null
이 포함되어 있습니다.나는 모든 행
ID Name IsConfirmed
1 test1 null
2 test2 null
나는 T-SQL을 사용하여 테이블의 모든 행에 IsConfirmed
열에 false
를 설정하는 방법?
감사
UPDATE YourTableName
SET IsConfirmed=0
WHERE isConfirmed is Null
이 무례하게 의미하지 않는다, 그러나 당신이 요청하기 전에이 연구에 어떠한 노력을 했는가?
@JohnFx's suggestion은 문제의 완벽한 해결책입니다. 그러나 이런 종류의 상황이 나타나지 않도록 방지하는 동시에 다른 잠재적 인 문제를 해결할 수있는 방법을 알고 싶을 수도 있습니다.
특히, 널 (NULL)을 0으로 YY려고한다는 사실은 컬럼이 처음에 널 (NULL)을 보유하지 못하게하려는 것일 수 있습니다. 당신이 비어 있지 않은 테이블에 NOT NULL
열을 추가하려고하면
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
, 오류의 경우를 얻을 수 있습니다 : 그것은 실제로 경우라면, 당신은 NOT NULL
지정에 열을 추가한다 사용자가 도은 SQL Server가 정의에 따라 NULL을 허용하는 열을 추가하려고하기 때문에 열의 기본값을 제공하지 않습니다.
ALTER TABLE tablename
ADD IsConfirmed bit NOT NULL
CONSTRAINT DF_tablename_IsConfirmed DEFAULT (0)
CONSTRAINT DF_tablename_IsConfirmed
부분은 선택 사항입니다, 당신은 단지 DEAFULT (0)
을 남길 수 있습니다,하지만, 난 여전히 그런 식으로하기 때문에, 당신은 기본값을 포함하여 모든 제약 조건을 명시 적으로 이름을 부여하는 것이 좋습니다 : 그래서,이 대신 같은 NOT NULL
열을 추가 그 (것)들을 드롭/재창조하는 것이 더 쉬울 것입니다. 같은 이유로 (제약 조건을 쉽게 관리 할 수 있도록) 제약 조건의 이름을 지정하는 데 고정 패턴을 사용하는 것이 좋습니다. 위의 문장 (DF
은 DEFAULT
이고 그 뒤에 표 이름이오고 열 이름이 뒤 따른다.)의 패턴은 단지 하나의 예일 뿐이다. 당신은 다른 것을 올릴 수있다. 하지만 일단 일관성을 유지하십시오.
+1 그러나 WHERE 절을 사용하는 것이 안전 조치로 제안됩니다. 'Where Isfirmated is NULL' 그것은 약간의 중복이지만 재앙을 피하는 것을 배우기에는 너무 이릅니다. 필터가없는 UPDATE 쿼리는 많은 데이터 사고의 원천이었습니다. –
그것은 나에게 긴장을 불러 일으켰고, 어디에도 글을 쓰지 않았지만 나는 OP를 혼동하고 싶지 않았다. 그래도 좋은 지적. – JohnFx
+1 @PaulSasik : 감사합니다. 4 점을 지적했습니다. – Addicted