[sql] SQL Server에서 Null이 아님 및 비어 있지 않은 문자열을 확인하는 방법은 무엇입니까?

WHERE열이 빈 문자열이 아니고 빈 문자열 ( '') 이 아닌지 SQL Server 조건을 어떻게 확인할 수 있습니까?



답변

빈 문자열로 “”만 일치시키려는 경우

WHERE DATALENGTH(COLUMN) > 0 

공백으로 만 구성된 문자열을 비어있는 것으로 계산하려면

WHERE COLUMN <> '' 

NULL에서 사용될 때 둘 다 값을 반환하지 않습니다 WHERE. 이것 보다는 오히려 NULL평가할 것이다 .UNKNOWNTRUE

CREATE TABLE T
  (
     C VARCHAR(10)
  );

INSERT INTO T
VALUES      ('A'),
            (''),
            ('    '),
            (NULL);

SELECT *
FROM   T
WHERE  C <> ''

단일 행만 반환합니다 A. 즉 NULL, 빈 문자열 또는 공백으로 구성된 문자열 이있는 행은 모두이 쿼리에서 제외됩니다.

SQL 바이올린


답변

WHERE NULLIF(your_column, '') IS NOT NULL

요즘 (4.5 세 이상) 사람이 쉽게 읽을 수 있도록하기 위해

WHERE your_column <> ''

null 검사를 명시 적으로 유혹하려는 유혹이 있지만 …

WHERE your_column <> ''
      AND your_column IS NOT NULL

… @ Martin Smith가 허용 된 답변에서 입증했듯이 실제로 아무것도 추가하지 않습니다 (요즘 개인적으로 SQL null을 완전히 피하므로 어쨌든 나에게는 적용되지 않습니다!).


답변

Coalesce는 null을 기본값으로 접습니다.

COALESCE (fieldName, '') <> ''


답변

기본적으로

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


답변

이를 수행하는 색인 ​​친화적 인 방법은 다음과 같습니다.

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

행이 많지 않거나이 필드가 색인화되지 않은 경우 다음을 사용할 수 있습니다.

 where isnull(field,'') <> ''


답변

이 중 하나를 사용하여 null, 공백 및 빈 문자열을 확인할 수 있습니다.

WHERE COLUMN <> ''

WHERE LEN(COLUMN) > 0

WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL


답변

그냥 확인하십시오 : where value> ”-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