2014-01-29 3 views
0

여러 필드에 실수로 채워진 여러 테이블이 null 값으로 표시되어 표시하려고 할 때 문제가 발생합니다.DB2에서 Null 값을 간단히 대체합니다.

나는 하나의 열을 하나씩 대체 할 수있는 방법을 알고 있지만, 모든 열의 모든 null 값을으로 바꾸는 쉬운 방법이 인지 알고 싶습니다. 나는 가능한 해결책을 찾지 못했습니다.

평균 약 80 개의 열이있는 30 개의 테이블을 계산하면 SQL을 생성하는 데 다소 시간이 걸릴 것입니다.

이 작업을 단순화하는 방법에 대한 제안이 있으십니까? 우리는 DB2의 V9를 사용는 경우 Xavjer

그것을위한 기능이나 사전에 유사한

감사

+0

여기서 경고의 단어 - null 값 (즉, 다른 값의 부족)이 _correct_ 인 상황이 여러 개 있습니다 (즉, 고객이 ** 제공하지 않기로 결정한 '생일'열) 이 정보). 너는 이것과 같은 것에 대해 걱정할 필요가 있니? 유효한 nulls? –

+0

현재 Null 값을 바꿀 경우 나중에 새 Null 값을 만들 수 있습니다. 널 (NULL)이 될 수 없도록 컬럼을 다시 정의하려면'ALTER TABLE'을 사용해야합니다. – Turophile

+0

@ Clockwork-Muse : 아니요, 우리는 'not null'개념을 가지고 있으므로 null 필드가 없으므로 표준 값을 정의했습니다. – Xavjer

답변

0

당신은 수정할 열에서 이름을 얻기 위해 카탈로그 테이블을 사용할 수 있습니다 (당신이 원하는 모든 경우)

select 'update ' || trim(tabschema) || '.' || trim(tabname) 
    || ' set ' || trim(colname) || ' = '' ''' 
    || ' where ' || trim(colname) || ' is NULL;' 
from syscat.columns 
where tabschema not like 'SYS%' 
    and XXX YYYY ; 

이 (테스트하지,하지만 이런 식으로 뭔가해야한다)

이 쿼리는 파일에 넣어 당신이 실행됩니다 라인 (복사/붙여 넣기) 또는 고양이의 세트를 생성 한 후

db2 -tvf file.sql | db2 +p -tv 

조건이 카탈로그를 필터링 할 수있는 자신의 상태이고 마지막을합니다. 더 많은 기준을 필터링하려면 syscat.tables 뷰를 사용할 수 있습니다.

+0

이것이 내가 원하는 것에 가깝지만 중요한 문제는 다음과 같습니다. 우리는 값이 낮은 열을 가지고 있습니다. 그러나 null이 아닙니다 ... ##가 낮은 값 (16 진수 x'00 ') 인'Example of an entry ## '과 같이 공백으로 만 바꿔서'Example of an entry '가됩니다. – Xavjer

+0

생각해 보면 다음과 같습니다. http://stackoverflow.com/questions/605768/search-and-replace-part-of-string-in-database – Xavjer

0

필자는 db2 luw 도구에 익숙하지 않지만 기존 테이블에서 적어도 create table 스크립트를 생성 할 수 있어야합니다. 조금 있지만 마법을 찾아서 대체하면 create를 디폴트 절이 아닌 not null을 포함하는 alter table로 변경할 수 있습니다.

+0

적어도 alter table은 그렇게 할 수 있다고 생각합니다. 모바일 장치의 구문 다이어그램을 따르기가 어렵습니다. – Charles

관련 문제