sql - 치환 - 오라클 빈값 넣기




Select 문에서 NULL 및 빈 문자열 바꾸기 (2)

또 다른 방법은 다음과 같습니다. - 단 하나의 표현식을 사용하는 것이 좋습니다 -

case when address.country <> '' then address.country
else 'United States'
end as country

주 : <> 연산자에 의한 null 의 체크 결과는 false 를 돌려줍니다.
그리고 문서화 된대로 : NULLIF 는 검색된 CASE 표현식과 동일합니다.
COALESCE 표현식은 CASE 표현식에 대한 구문 적 단축키입니다 .
그래서, 이들의 조합은 두 번의 case 표현을 사용합니다.

NULL 또는 빈 공간 (예 : '' ) 값을 가질 수있는 열이 있습니다. 나는이 두 값을 'UNKNOWN' 과 같은 유효한 값으로 대체하려고합니다. 내가 찾은 다양한 솔루션은 테이블 자체의 값을 수정하는 것이 좋습니다. 그러나이 경우 데이터베이스는 개발 및 / 또는 패치가 매우 부족한 제 3 자 응용 프로그램 용입니다 (현실적으로 Rottweiler가 더 나은 작업을 수행 할 수 있다고 생각합니다). 기본 데이터를 수정하면 응용 프로그램이 연기가 나는 구멍에 녹을 수 있습니다.

다음 명령의 변형을 시도했습니다.

COALESCE(Address.COUNTRY, 'United States') -- Won't replace empty string as it is not NULL
REPLACE(Address.COUNTRY, '', 'United States') -- Doesn't replace empty string
ISNULL(Address.COUNTRY, 'United States') -- Works for NULL but not empty string

나는 CASE 문을 사용할 수 있지만 훨씬 더 우아하고 효율적인 솔루션이 있기를 바라고 있습니다.

내 특정 문제에 대한 해결책을 찾았으며 대답을 찾지 못했다고 말할 때 나를 믿어야합니다. 내가 간과 한 일이 있으면, 나에게 불이 붙은 길을 친절하게 보여 주라.


실제 테이블 데이터를 변경하는 대신보기를 원하는 것처럼 들립니다.

Coalesce(NullIf(rtrim(Address.Country),''),'United States')

실제로 빈 문자열 (또는 빈 문자열) 인 경우 열이 null이되도록 강제하고 병합에 null이 있어야합니다.





tsql