2016-06-30 3 views
0

테이블 수는 some_table이고 열 수는 NULL으로 변환해야하는 일부 행에 일부 잘못된 값이 있습니다.SQL - 조건부로 열 값을 NULL로 설정합니다.

원본 테이블이 하나의 권한에 의해 허용되지 않고 또한 모든 열 이름에 대해 반복되어야하므로 원본 테이블을 변경하는 것으로 인해 아래를 사용할 수 없습니다.

UPDATE some_table [email protected]@ SET column_name = NULL WHERE column_name = 'invalid value'; 

는 그래서 NULL로 변환 유효하지 않은 값을 갖는 새 테이블을 만들 수있는 'SELECT'작업을 할 필요가 -이 작업을 수행하는 빠른 방법이있다?

NULLIF 아래 @Jonny에서 답을 업데이트

좋은 옵션입니다. 그러나 각 열을 따로 따로 처리하지 않고 모든 열에 적용하는 방법이 있습니다. 열의 수가 꽤 큰 경우가 있습니다.

+0

친구, 당신은 모든 컬럼에 적용 할 수 없습니다. 조니의 대답은 좋다, 당신은 1 열 1 열을 다루어야 만한다. –

답변

1

당신은 NULLIF

를 사용할 수는 9.16.3에서보세요. https://www.postgresql.org/docs/current/static/functions-conditional.html

SELECT NULLIF('invalid value', column_name) 
FROM some_table 
+0

NULLIF는 좋은 옵션입니다. 그러나 각 열에 대해 별도로 수행해야하는 대신 모든 열에 적용하는 방법이 있습니까? – user3206440

+0

구식 버전의 Postgres 매뉴얼로 링크하지 마십시오. 현재 버전의 매뉴얼에는'/ docs/current /'를 사용하십시오. –

0

NULLIF 같은 것에 대해 어떻게 :

INSERT INTO some_table2 (column_name, ...) SELECT * FROM some_table WHERE column_name <> 'invalid value'; 
INSERT INTO some_table2 (column_name, ...) SELECT null, ... FROM some_table WHERE column_name = 'invalid_value'; 
관련 문제