울음참고 개발공부
article thumbnail
728x90

 

 

 

 

 

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

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!