DataBase/MsSql
MSSQL CONVERT 함수 사용법 정리 및 성능 저하
아우럼
2024. 4. 16. 19:00
반응형
MSSQL에서 지원되는 CONVERT 함수는 데이터 타입 변환할 때 사용되는 함수입니다.
CONVERT 함수 특징
- CONVERT 함수는 하나의 유형에서 다른 타입으로 데이터를 변환하는 데 사용됩니다.
- 문자열을 숫자로 변환하거나 날짜 형식을 다른 형식으로 변환할 때 유용하게 사용하고 있습니다.
- 날짜 출력 형식 표를 이용하여 다양한 형식으로 datetime을 표현할 수 있습니다.
CONVERT 함수 사용법 및 설명
CONVERT 함수 구문.
CONVERT ( data_type [( length )] , expression, [style])
- data_type : 데이터를 변환하려는 데이터 타입입니다.
- length : 목표 데이터 타입의 길이입니다.
- expression : 변환하려는 실제 데이터 또는 필드입니다.
- style : 선택적으로 사용하며, 날짜와 시간 데이터 타입의 변환에서 출력 형식을 결정할 때 주로 사용합니다.
데이터 TYPE 변경.
- table 입력한 data를 다양하게 변환하여 반환할 수 있습니다.
- 문자 data를 SMALLINT, INT로 변환할 때는 error 발생합니다.
-- UserInfoForConvert
DROP TABLE IF EXISTS UserInfoForConvert;
CREATE TABLE dbo.UserInfoForConvert
(
EmpID SMALLINT,
EmpName NVARCHAR(40),
InputDate VARCHAR(8),
DeptID INT,
WriteDate datetime
);
INSERT INTO UserInfoForConvert VALUES
(110,'Jessica','20240101','10',getdate()),
(111,'Alicia','20240301','10',getdate()),
(120,'Michael','20240401','20',getdate()),
(121,'Alicia','20240914','20',getdate()) ;
-- 실행 example
SELECT CONVERT(NVARCHAR(10),EmpID) AS EmpID FROM UserInfoForConvert --VARCHAR로 변환
SELECT CONVERT(VARCHAR(1),EmpName) AS EmpName FROM UserInfoForConvert --VARCHAR 1자리로 변환
SELECT CONVERT(CHAR,InputDate,121) AS InputDate FROM UserInfoForConvert --CHAR로 변환
SELECT CONVERT(SMALLINT,DeptID) AS DeptID FROM UserInfoForConvert --SMALLINT로 변환
SELECT CONVERT(VARCHAR(8),WriteDate,112) AS WriteDate FROM UserInfoForConvert --VARCHAR로 변환
SELECT CONVERT(int,EmpName) AS EmpName FROM UserInfoForConvert -- ERROR 발생.
CONVERT에서 datetime 데이터 사용으로 변환.
- 날짜 및 시간은 표현하는 여러 가지 형식이 있으므로 활용도가 좋습니다.
- 스타일 코드를 사용하여 예제 소스를 참고하여 다양하게 표현형식을 변환하세요.
- 실행 소스입니다.
--- 날짜 및 시간 타입 변경
SELECT CONVERT(NVARCHAR, GETDATE(), 0)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 1)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 2)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 3)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 4)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 5)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 6)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 7)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 8)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 9)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 10)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 11)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 12)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 13)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 14)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 20)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 21)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 22)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 23)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 101)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 102)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 103)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 104)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 105)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 106)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 107)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 110)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 111)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 112)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 113)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 120)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 121)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 126)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 127)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 130)
UNION ALL SELECT CONVERT(NVARCHAR, GETDATE(), 131)
;
CONVERT에 형식화된 XML 사용.
-- CONVERT에 형식화된 XML 사용
SELECT CONVERT(XML, '<root><child/></root>')
- convert 함수는 xml 형식에서도 사용 가능합니다.
INSERT, UPDATE, WHERE, LIKE 사용.
- CONVERT 함수는 대부분 SELECT 구문 내에서 사용되지만, 그 외 구문에서도 다양하게 활용되고 있습니다.
-- INSERT 특정 유형의 데이터를 다른 유형으로 변환하여 삽입
INSERT INTO UserInfoForConvert VALUES
(111,'Jessica','20240101','10',CONVERT(NVARCHAR, GETDATE(), 110));
-- UPDATE 기존 데이터의 유형을 변경할 때 사용
UPDATE UserInfoForConvert
SET WriteDate = CONVERT(NVARCHAR, GETDATE(), 112)
WHERE EmpID = '111';
-- WHERE, LIKE 사용
SELECT *
FROM DBO.UserInfoForConvert
WHERE EmpID = '111';
CONVERT 함수의 성능
CONVERT 함수의 성능 저하를 발생하는 요인.
- 대량의 데이터 집합을 변환해야 하는 경우 성능 저하가 발생합니다.
- CONVERT 함수를 사용하는 쿼리의 인덱스 및 최적화 상태도 성능에 영향을 줘 속도가 Database에 부하가 발생할 수 있습니다.
- 빈번한 호출은 부하를 초래할 수 있으므로 CONVERT 함수를 자주 호출하는 쿼리는 주의해서 사용해야 합니다.
반응형