단일 테스트로 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 ''
null or Empty
컬럼의 값을 확인하는 동안 다양한 데이터베이스에서 지원 문제가 있음을 발견했습니다.
모든 데이터베이스는 지원하지 않습니다 TRIM
방법.
아래는 다른 데이터베이스에서 지원하는 방법을 이해하기위한 매트릭스입니다.
SQL의 TRIM 함수는 문자열에서 지정된 접두사 또는 접미사를 제거하는 데 사용됩니다. 제거되는 가장 일반적인 패턴은 공백입니다. 이 함수는 데이터베이스마다 다르게 호출됩니다.
- MySQL :
TRIM(), RTRIM(), LTRIM()
- 신탁:
RTRIM(), LTRIM()
- SQL 서버 :
TRIM(), RTRIM(), LTRIM()
빈 / Null / 공백 확인 방법 :-
다음은 서로 다른 데이터베이스에 따라 두 가지 다른 방법입니다.
이러한 트림 함수의 구문은 다음과 같습니다.
Trim을 사용하여 확인
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
LTRIM 및 RTRIM을 사용하여 확인-
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
위의 두 가지 방법은 데이터베이스 지원에 따라 동일한 결과를 제공합니다. 비어 있으면 FirstName
from UserDetails
테이블을 반환합니다.LastName
이것이 다른 사람들에게도 도움이되기를 바랍니다. :)
NULLIF 함수는 공백 만있는 모든 열 값을 NULL 값으로 변환합니다. T-SQL 및 SQL Server 2008 이상에서 작동합니다.
SELECT [column_name]
FROM [table_name]
WHERE NULLIF([column_name], '') IS NULL
이 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,'') <> ''
특정 필드가 비어있는 레코드를 찾기 위해 Oracle에서 쿼리를 실행하라는 모든 개인 제안 ((null) 또는 다른 필드 만 빈 줄만 포함)은 작동하지 않았습니다. 나는 모든 제안 된 코드를 시도했다. 온라인에서 계속 검색 할 것 같아요.
*****최신 정보*****
나는 이것을 시도했고 효과가 있었지만 <1이면 작동하지 않는 이유가 확실하지 않지만 어떤 이유로 <2가 작동하고 필드가 비어있는 레코드 만 반환했습니다.
[tableName]에서 [columnName]을 선택합니다. 여기서 LENGTH (columnName) <2;
I am guessing whatever script that was used to convert data over has left something in the field even though it shows blank, that is my guess anyways as to why the < 2 works but not < 1
However, if you have any other values in that column field that is less than two characters then you might have to come up with another solution. If there are not a lot of other characters then you can single them out.
Hope my solution helps someone else out there some day.
What I use for IsNotNullOrEmptyOrWhiteSpace
in T-SQL is:
SELECT [column_name] FROM [table_name]
WHERE LEN(RTRIM(ISNULL([column_name], ''))) > 0
As in Oracle you can use NVL function in MySQL you can use IFNULL(columnaName, newValue) to achieve your desired result as in this example
SELECT column_name from table_name WHERE IFNULL(column_name,'') NOT LIKE '%_%';
you can use
SELECT [column_name]
FROM [table_name]
WHERE [column_name] LIKE '% %'
OR [column_name] IS NULL
'developer tip' 카테고리의 다른 글
iPhone 자동 테스트 (0) | 2020.10.30 |
---|---|
.NET에서 Maven이 필요하지 않은 이유는 무엇입니까? (0) | 2020.10.30 |
Makefile 변수에서 항목을 제거 하시겠습니까? (0) | 2020.10.30 |
인라인 블록 div가 래핑되지 않도록 방지하는 방법은 무엇입니까? (0) | 2020.10.30 |
O (log * N)는 무엇입니까? (0) | 2020.10.30 |