Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

CAST, CONVERT 함수(문자열과 숫자 또는 날짜 연결) 본문

MSSQL/다양한 SQL 함수 사용(문자열 함수)

CAST, CONVERT 함수(문자열과 숫자 또는 날짜 연결)

빌드이너프 2024. 12. 3. 22:12

실무를 하다 보면 문자열이 아닌 값을 문자열에 연결해야 할 때가 많다.

숫자나 날짜 등의 값을 문자열로 변환해 연결하려면 어떻게 해야할까? -> CAST와 CONVERT 함수 사용

 

숫자형 ipo_year 열과 open_price 열에 어떤 값이 있는지 확인하는 쿼리와, 이들 두 열을 연결하고자 +를 사용하는 쿼리

숫자형 데이터를 +로 연결: 오류 발생

SELECT ipo_year, open_price FROM nasdaq_company
WHERE symbol = 'MSFT'

SELECT ipo_year + open_price FROM nasdaq_company
WHERE symbol = 'MSFT'

ipo_year + open_price의 결과는 문자열을 더한 값이 아니라 숫자형인 2324.51...이다.

 

CAST 또는 CONVERT 함수는 숫자형이나 날짜형 등의 데이터를 문자열과 같은 자료형으로 변환할 수 있다.

CAST 함수 사용 방법

CAST(expression AS datetype(length))

 

숫자형 데이터를 문자열로 연결: CAST 함수로 자료형 변환

SELECT
	CAST(ipo_year AS nvarchar(50)) + ' ' + CAST(open_price AS nvarchar(50))
FROM nasdaq_company
WHERE symbol = 'MSFT'

 

CONVERT 함수 사용 방법

CONVERT (data_type [(length)

 

숫자형 데이터를 문자열로 연결: CONVERT 함수로 자료형 변환

SELECT
	CONVERT(nvarchar(50), ipo_year) +
	' ' + 
	CONVERT(nvarchar(50), open_price)
FROM nasdaq_company
WHERE symbol = 'MSFT'


CAST나 CONVERT 함수를 사용할 때 AS nvarchar(50) 또는 nvarchar(50)과 같이 문자열의 길이를 지정할 수 있다.

=> 문자열을 변환할 때 nvarchar에 지정한 값이 실제 변환할 문자열의 길이보다 작으면 문자열이 잘린다.

 

'2021-01-01 23:59:59.999'를 문자열로 변환하되, 문자열 크기를 5byte로 지정한 것

SELECT CONVERT (NVARCHAR(5), '2021-01-01 23:59:59.999')

 

'2021-01-01 23:59:59.999'를 문자열로 변환하되, 문자열 크기를 15byte로 지정한 것

SELECT CONVERT (NVARCHAR(15), '2021-01-01 23:59:59.999')


숫자형을 문자열로 변환하되 문자열 크기를 작게 지정하는 경우에는 산술오버플로 오류가 발생한다

 

10자리 숫자를 5자리 문자열로 변환하는 쿼리

할당한 공간의 크기가 5가 변환할 대상의 크기 10보다 작아서 산술오버플로 오류가 발생하는 것을 알 수 있다.

SELECT CONVERT (NVARCHAR(5), 1234567890)

 

만약 숫자에서 앞의 5자지를 문자열로 반환받고 싶다면 숫자 앞뒤로 ''를 추가해 문자열로 인식시킨 다음 5자리를 잘라내야 한다.

SELECT CONVERT (NVARCHAR(5), '1234567890')