2023년 10월 기준 검색 결과 처음 뜨는 내용이다.
DATETIME 을 그냥 IS NULL 로 처리하게 된다면 '1990-01-01' 과 같은 초기화 값을 얻게된다.
처리하는 방법을 알아보자
SELECT CASE WHEN ORDER_DATE IS NULL THEN ' '
ELSE ORDER_DATE
END AS ORDER_DATE
, CASE WHEN CONVERT(VARCHAR, ORDER_DATE, 120) IS NULL THEN ' '
ELSE ORDER_DATE
END AS ORDER_DATE2
, ISNULL (CONVERT(VARCHAR,ORDER_DATE, 120), ' ') AS ORDER_DATE3
, COALESCE (LEFT(CONVERT(VARCHAR, ORDER_DATE, 120),16), ' ') AS ORDER_DATE4
FROM 테이블
ORDER_DATE
: DATETIME 을 IS NULL 조건으로 처리한 데이터
ORDER_DATE2
: CONVERT() 함수로 DATETIME 데이터 타입을 VARCHAR로 변환한 후 IS NULL 조건으로 처리한 데이터
(*CONVERT() 함수에 대해서는 아래에서 다룬다 )
ORDER_DATE3
: ISNULL() 함수를 사용하여 VARCHAR 로 변환한 데이터가 NULL 인지 확인하여 공백으로 대체
ORDER_DATE4
:COALESCE() 함수를 사용하여 VAHRCHAR 로 변환한 데이터가 NULL 인지 확인하여 공백으로 대체
결론은 상황에 따라 ORDER_DATE3 이나 ORDER_DATE4에 해당하는 방식을 사용하면 된다는 것 !
SELECT ISNULL(CONVERT(varchar, 해당하는 컬럼, 120)) FROM 테이블;
SELECT COALESCE(CONVERT(varchar, 해당하는 컬럼, 120)) FROM 테이블;
IS NULL 과 ISNULL() 의 차이 ? / ISNULL() 과 COALESCE() 의 차이 ?
IS NULL 은 조건절에 사용되는 조건문 !!
ex) SELECT * FROM table_name WHERE column_name IS NULL;
ISNULL() 는 SQL Server 에서 사용되는 함수 !!
ex) SELECT ISNULL(column_name, replacement_value) FROM table_name;
첫번째 인수가 NULL 인 경우 두번째 인수를 반환한다.
항상 두 개의 인수를 가진다.
COALESCE() 인수 중에 첫 번째 NULL 이 아닌 값을 반환
ex) SELECT COALESCE(column1, column2, column3, 'No Value') FROM table_name;
2개 이상의 인수를 받을 수 있으며, 첫 번째 NULL 이 아닌 값을 찾을때까지 표현식을 왼쪽에서 오른쪽으로 검사
column1, column2, column3 중에서 첫 번째 NULL 이 아닌 값을 찾으면 'No Value' 를 봔환한다.
CONVERT() 함수
: Microsoft SQL Server에서 사용되는 함수 중 하나로, 데이터 형식을 변환하거나 형식화할 때 주로 사용하는 함수
CONVERT(data_type, expression, style)
data_type: 변환하려는 데이터 형식 ex) int, varchar, datetime 등
expression: 변환하려는 실제 값 또는 열
style (선택 사항): 날짜 및 시간 형식과 관련이 있는 경우에 사용
(스타일 매개 변수는 날짜 및 시간 값을 특정 서식으로 표현하기 위해 사용됨 )
위의 코드에서 사용한 style 은 120 으로 'YYYY-MM-DD HH:MM:SS' 형태를 나타내는데,
LEFT 함수를 적용하여 16번째 문자열까지 잘라서 `YYYY-MM-DD HH:MM` 까지만 사용하였다.
COALESCE (LEFT(CONVERT(VARCHAR, ORDER_DATE, 120),16), ' ') AS ORDER_DATE4
'TIL' 카테고리의 다른 글
TIL | 요구사항 작성법 (2) | 2023.11.13 |
---|---|
SQL 예제를 풀어볼 수 있는 사이트들 (0) | 2023.11.08 |
[오류해결] org.springframework.beans.factory.CannotLoadBeanClassException: (0) | 2023.10.24 |
TIL | WebChatGPT: 인터넷 액세스 가능한 ChatGPT (0) | 2023.10.04 |
TIL | ASCII Code (0) | 2023.09.14 |