복붙노트

[SQL] 어떻게하지 널 확인하고 SQL 서버에 빈 문자열은 아닌가하는?

SQL

어떻게하지 널 확인하고 SQL 서버에 빈 문자열은 아닌가하는?

우리는 어떻게 조건이 열이 널 (null)이 아닌 빈 문자열 ( '') 여부는 SQL 서버에서 확인할 수 있나요?

해결법

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

    1.당신은 단지 빈 문자열로 ""일치 시키려면

    당신은 단지 빈 문자열로 ""일치 시키려면

    WHERE DATALENGTH(COLUMN) > 0 
    

    당신은 빈으로 공간의 전체로 구성된 임의의 문자열을 계산하려면

    WHERE COLUMN <> '' 
    

    WHERE 절에서 사용하는 경우이 두 NULL 값을 반환하지 않습니다. NULL이 아닌 TRUE에 대한 UNKNOWN으로 평가합니다 것처럼.

    CREATE TABLE T 
      ( 
         C VARCHAR(10) 
      ); 
    
    INSERT INTO T 
    VALUES      ('A'), 
                (''),
                ('    '), 
                (NULL); 
    
    SELECT * 
    FROM   T 
    WHERE  C <> ''
    

    반환 그냥 단일 행 A. 즉, NULL 또는 빈 문자열 또는 완전히 공간으로 구성된 문자열 행은이 모든 쿼리에서 제외됩니다.

    SQL 바이올린

  2. ==============================

    2.

    WHERE NULLIF(your_column, '') IS NOT NULL
    

    요즘 (4.5 년)에, 쉽게 인간이 읽을 수 있도록 그냥 사용하는 것

    WHERE your_column <> ''
    

    널 검사가 명시 적으로 만들 수있는 유혹이 있지만 ...

    WHERE your_column <> '' 
          AND your_column IS NOT NULL
    

    @Martin 스미스가 허용 대답에 보여줍니다으로 ..., 정말 아무것도 추가하지 않습니다 (그리고 나는 개인적으로 피하다 SQL 널 완전히 요즘, 그래서 어쨌든 나에게 적용되지 않는다!).

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

    3.합체는 디폴트로 null을 접을 것이다 :

    합체는 디폴트로 null을 접을 것이다 :

    COALESCE (fieldName, '') <> ''
    
  4. ==============================

    4.기본 방법

    기본 방법

    SELECT *
    FROM [TableName]
    WHERE column_name!='' AND column_name IS NOT NULL
    
  5. ==============================

    5.이 일의 인덱스 친화적 인 방법은 다음과 같습니다

    이 일의 인덱스 친화적 인 방법은 다음과 같습니다

    where (field is not null and field <> '')
    

    가 많지 않은 행 또는이 필드가 인덱싱되지 않은 경우, 당신은 사용할 수 있습니다 :

     where isnull(field,'') <> ''
    
  6. ==============================

    6.당신은 널 (null), 공백 및 빈 문자열을 확인하려면 다음 중 하나를 사용할 수 있습니다.

    당신은 널 (null), 공백 및 빈 문자열을 확인하려면 다음 중 하나를 사용할 수 있습니다.

    WHERE COLUMN <> '' 
    
    WHERE LEN(COLUMN) > 0
    
    WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
    
  7. ==============================

    7.그냥 확인 : 여기서 값> ''- null이 아니 비어 있지

    그냥 확인 : 여기서 값> ''- null이 아니 비어 있지

    -- COLUMN CONTAINS A VALUE (ie string not null and not empty) :
    -- (note: "<>" gives a different result than ">")
    select iif(null    > '', 'true', 'false'); -- false (null)
    select iif(''      > '', 'true', 'false'); -- false (empty string)
    select iif(' '     > '', 'true', 'false'); -- false (space)
    select iif('    '  > '', 'true', 'false'); -- false (tab)
    select iif('
    '                  > '', 'true', 'false'); -- false (newline)
    select iif('xxx'   > '', 'true', 'false'); -- true
    --
    --
    -- NOTE - test that tab and newline is processed as expected:
    select 'x   x' -- tab
    select 'x
    
    x' -- newline
    
  8. from https://stackoverflow.com/questions/8660203/how-to-check-for-is-not-null-and-is-not-empty-string-in-sql-server by cc-by-sa and MIT license