충분히 쌓여가는
CAST, CONVERT 함수(문자열과 숫자 또는 날짜 연결) 본문
실무를 하다 보면 문자열이 아닌 값을 문자열에 연결해야 할 때가 많다.
숫자나 날짜 등의 값을 문자열로 변환해 연결하려면 어떻게 해야할까? -> 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')
'MSSQL > 다양한 SQL 함수 사용(문자열 함수)' 카테고리의 다른 글
문자열 길이 반환: LEN 함수 (1) | 2024.12.04 |
---|---|
문자열 공백 제거: LTRIM, RTRIM, TRIM 함수 (0) | 2024.12.04 |
문자열을 소문자나 대문자로 변경: LOWER, UPPER 함수 (0) | 2024.12.04 |
NULL과 문자열 연결: ISNULL, COALESCE 함수 (0) | 2024.12.04 |
01 CONCAT 함수(문자열과 문자열 연결) (0) | 2024.10.27 |