복붙노트

[SQL] 선택 문 내에서 NULL과 빈 문자열을 교체

SQL

선택 문 내에서 NULL과 빈 문자열을 교체

나도 NULL 또는 빈 공간을 가질 수 있습니다 열 (즉, '') 값이 있습니다. 나는 '알 수 없음'와 같은 유효한 값으로이 값을 모두 교체하고 싶습니다. 내가 찾은 다양한 솔루션은 테이블 자체 내에서 값을 수정하는 것이 좋습니다. 그러나, 이것은 (내 애마가 더 나은 일을 할 수 있었다 생각 현실에서) 데이터베이스가 매우 저조한 개발 및 / 또는 패치 타사 응용 프로그램에 대한 것을이 경우 옵션을 선택하지 않습니다. 나는 기본 데이터를 수정하는 응용 프로그램이 흡연 구멍에 녹아 원인이 될 수 있다고 우려하고있다.

나는 다음과 같은 명령의 변화를 시도했다 :

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 문을 사용할 수 있습니다 알고 있지만 훨씬 더 우아한 / 효율적인 솔루션이 기대하고있다.

나는 내 특정 문제에 대한 해결책을 찾았다하고 답을 발견하지 않았습니다 말할 때 당신은 저를 신뢰해야합니다. 내가 뭔가를 간과 한 경우, 그래도 친절하게 나에게 광경을 보여줍니다.

해결법

  1. ==============================

    1.이 시도

    이 시도

    COALESCE(NULLIF(Address.COUNTRY,''), 'United States')
    
  2. ==============================

    2.당신 같은 소리 대신 실제 테이블 데이터를 변경의보기를 원한다.

    당신 같은 소리 대신 실제 테이블 데이터를 변경의보기를 원한다.

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

    이것은 실제로 빈 문자열 (또는 빈 문자열) 후 유착이와 작업에 널 (null)이됩니다 경우는 null로 당신의 열을 강제 할 것이다.

  3. ==============================

    3.다른 방법이 될 수 있습니다 : - 하나의 표현을 사용 권장 -

    다른 방법이 될 수 있습니다 : - 하나의 표현을 사용 권장 -

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

    4.등의 조합과 같은 테이블에있는 예제 데이터를 들면

    등의 조합과 같은 테이블에있는 예제 데이터를 들면

    ''당신은 실제 값에 원하는에 대체 것보다 널 (null)과뿐만 아니라 실제 값 '이 쿼리를 실행보다 # 기호로'와 널 (null) 값

    SELECT Column_Name = (CASE WHEN (Column_Name IS NULL OR Column_Name = '') THEN '#' ELSE Column_Name END) FROM Table_Name
    

    또 다른 방법은 당신이 그것을 사용할 수 있지만이 조금 긴이며, 대신 당신은 또한 ISNULL 기능 그러나 여기에만 내가 IIF 기능을 언급하고 사용할 수 있습니다

    SELECT IIF(Column_Name IS NULL, '#', Column_Name) FROM Table_Name  
    SELECT IIF(Column_Name  = '', '#', Column_Name) FROM Table_Name  
    -- and syntax of this query
    SELECT IIF(Column_Name IS NULL, 'True Value', 'False Value') FROM Table_Name
    
  5. from https://stackoverflow.com/questions/17244808/replacing-null-and-empty-string-within-select-statement by cc-by-sa and MIT license