MS-SQL 데이터 형변환 방법

SQL MS-SQL

문제점 😅

저번에 문자열 합치는 방법에 대해서 작성 중 형변환에 대한 이야기가 나와서 한 번 짚고 넘어가본다.

해결책 😏

MS-SQL에서 데이터 형식 변환 시, CAST() 함수와 CONVERT() 함수를 이용한다. 사용방법에 약간의 차이가 있지만, 두 함수 동일한 역할을 하며 CONVERT() 함수에는 CAST() 함수에는 없는 스타일을 정의할 수 있는 기능이 있다.

CAST() 함수 사용

CAST ( expression AS data_type [ ( length ) ] )
SELECT '10000'                     -- 1. 문자 10000
      ,CAST('10000' AS INT)        -- 2. 숫자 10,000
      ,CAST('10000' AS NUMERIC(5)) -- 3. 숫자 10,000
      ,CAST('abcde' AS VARCHAR(3)) -- 4. 문자 abc
;

CONVERT() 함수 사용

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
SELECT '10000'                     -- 1. 문자 10000
      ,CONVERT(INT, '10000')       -- 2. 숫자 10,000
      ,CONVERT(NUMERIC(5), '10000')-- 3. 숫자 10,000
      ,CONVERT(VARCHAR(3), 'abcde')-- 4. 문자 abc
;

CAST() 함수와 CONVERT() 함수에서 NUMERIC의 길이값을 변환할 데이터의 길이(크기)보다 작게하면 에러 발생하며(3), VARCHAR의 길이값도 변환할 데이터의 길이(크기)보다 작은 경우 문자열이 모자른 길이만큼 누락된다(4).

날짜를 문자형으로 변환 시, CONVERT() 함수 사용

사실 CONVERT() 함수를 자주 보게된 부분은 바로 날짜를 문자열로 변환하는 부분이었다. 옵션값으로 style을 지정했다.

SELECT CONVERT(CHAR(23), GETDATE(), 21) -- 2023-09-13 16:01:46.650
      ,CONVERT(CHAR(10), GETDATE(), 23) -- 2023-09-13
      ,CONVERT(CHAR(8), GETDATE(), 112) -- 20230913
;

자주 사용되는 3가지 style이라고 한다. 그 밖의 MS-SQL 날짜 변환표는 링크를 클릭.

마무리 😎

간단하게 형변환 하는 방법을 숙지했으니 날짜 변환도 어렵지 않다.

참고문헌 📝

https://blog.naver.com/diceworld/220163553808
https://tjddnjs625.tistory.com/24