[sql] 단일 테스트로 null / 빈 / 공백 값을 확인하는 방법은 무엇입니까?

하나의 테스트 만 사용하여 값이없는 열 (null, 비어 있음 또는 모든 공백)을 반환하는 SELECT 문을 작성하고 싶습니다.

나는 이것이 효과가 있다고 생각했다.

SELECT column_name from table_name WHERE column_name NOT LIKE '%_%';

그러나 이것은 NULL 값에 대해서는 작동하지 않습니다.

물론 추가 할 수 있습니다

OR column_name IS NULL

작동하지만 단일 테스트를 사용하는 방법을 원합니다.



답변

기능적으로 사용할 수 있어야합니다.

SELECT column_name
  FROM table_name
 WHERE TRIM(column_name) IS NULL

문제는 COLUMN_NAME의 색인이 사용되지 않는다는 것입니다. 선택적 조건 인 경우 TRIM (column_name)에 함수 기반 인덱스가 있어야합니다.


답변

SELECT column_name from table_name
WHERE RTRIM(ISNULL(column_name, '')) LIKE ''

ISNULL(column_name, '') column_name이 NULL이면 ”를 반환하고 그렇지 않으면 column_name을 반환합니다.

최신 정보

Oracle에서는을 사용 NVL하여 동일한 결과를 얻을 수 있습니다 .

SELECT column_name from table_name
WHERE RTRIM(NVL(column_name, '')) LIKE ''


답변

NULLIF 함수는 공백 만있는 모든 열 값을 NULL 값으로 변환합니다. T-SQL 및 SQL Server 2008 이상에서 작동합니다.

SELECT [column_name]
FROM [table_name]
WHERE NULLIF([column_name], '') IS NULL


답변

null or Empty컬럼의 값을 확인하는 동안 여러 데이터베이스에서 지원 문제가 있음을 발견했습니다.

모든 데이터베이스는 지원하지 않습니다 TRIM 방법.

아래는 다른 데이터베이스에서 지원하는 방법을 이해하기위한 매트릭스입니다.

SQL의 TRIM 함수는 문자열에서 지정된 접두사 또는 접미사를 제거하는 데 사용됩니다. 제거되는 가장 일반적인 패턴은 공백입니다. 이 함수는 다른 데이터베이스에서 다르게 호출됩니다.

  • MySQL : TRIM(), RTRIM(), LTRIM()
  • 신탁: RTRIM(), LTRIM()
  • SQL 서버 : TRIM(), RTRIM(), LTRIM()

빈 / Null / 공백 확인 방법 :-

아래는 서로 다른 데이터베이스에 따라 두 가지 다른 방법입니다.

이러한 트림 함수의 구문은 다음과 같습니다.

  1. Trim을 사용하여 확인

    SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL

  2. LTRIM 및 RTRIM을 사용하여 확인-

    SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL

위의 두 가지 방법은 데이터베이스 지원에 따라 동일한 결과를 제공합니다. 비어 있으면 FirstNamefrom UserDetails테이블을 반환합니다.LastName

이것이 다른 사람들에게도 도움이되기를 바랍니다. 🙂


답변

이 phpMyAdmin 쿼리는 null이 아니거나 비어 있지 않거나 공백 만있는 행을 반환합니다.

SELECT * FROM `table_name` WHERE NOT ((`column_name` IS NULL) OR (TRIM(`column_name`) LIKE ''))

null / 빈 / 단지 공백 인 행을 선택하려면 NOT을 제거하십시오.


답변

아래 쿼리를 사용하면 작동합니다.

SELECT column_name FROM table_name where isnull(column_name,'') <> ''


답변

IsNotNullOrEmptyOrWhiteSpaceT-SQL에서 사용하는 것은 다음과 같습니다.

SELECT [column_name] FROM [table_name]
WHERE LEN(RTRIM(ISNULL([column_name], ''))) > 0