반응형
이번 글에서는 SQL Server가 자동으로 수행하는 묵시적 형변환과
그로 인해 발생할 수 있는 오류 또는 비의도적 결과를 확인하고,
명시적 형변환을 적절히 활용하는 방법까지 실습해 보았습니다.
📌 예제 코드 ①: 묵시적 형변환이 포함된 문자열 결합
SELECT CONVERT(nvarchar(50), ipo_year) + ' ' + open_price
FROM nasdaq_company
WHERE symbol = 'MSFT';
💬 설명
- CONVERT(nvarchar, ipo_year)는 명시적 문자열 변환
- open_price는 float형이지만 문자열과 + 연산을 하므로 자동으로 문자열로 묵시적 변환
- 이런 경우, SQL Server가 내부적으로 형을 변환하여 결과를 문자열로 반환
📌 예제 코드 ②: 날짜형 컬럼 확인
SELECT ipo_year, last_crawel_date
FROM nasdaq_company
WHERE symbol = 'MSFT';
💬 설명
- ipo_year: int 형식 (예: 2021)
- last_crawel_date: datetime 형식 (예: 2021-10-14 00:00:00.000)
📌 예제 코드 ③: 숫자형 + 날짜형
SELECT ipo_year + last_crawel_date
FROM nasdaq_company
WHERE symbol = 'MSFT';
💬 설명
- ipo_year는 정수형(int), last_crawel_date는 날짜형(datetime)
- int + datetime 연산은 int를 날짜에서 더할 일수(day)로 간주
- 예를 들어 2021 + 2021-10-14 → 2027-04-14 00:00:00.000 처럼 정상 동작
- 오류 없이 묵시적 변환이 발생함을 확인할 수 있는 예제
📌 예제 코드 ④: 문자열 + 날짜형 (묵시적 변환)
SELECT CONVERT(nvarchar(50), ipo_year) + ' ' + last_crawel_date
FROM nasdaq_company
WHERE symbol = 'MSFT';
💬 설명
- last_crawel_date는 자동으로 문자열로 변환됨
- 포맷 제어는 되지 않지만, + 연산은 정상 동작
📌 예제 코드 ⑤: 명시적 변환과 날짜 포맷 지정
SELECT
CONVERT(nvarchar(50), ipo_year) + ' ' +
CONVERT(nvarchar(50), last_crawel_date, 120)
FROM nasdaq_company
WHERE symbol = 'MSFT';
💬 설명
- CONVERT(..., ..., 120)은 "yyyy-mm-dd hh:mi:ss" 형식으로 날짜 출력
- 날짜 출력 형식을 명확하게 통제할 수 있는 방식
💡 포인트 정리
- 묵시적 형변환은 자동으로 일어나지만 예측이 어려울 수 있음
- int + datetime은 오류가 아닌, 날짜에 일 수를 더하는 연산으로 처리됨
- 문자열 결합 시도 시 숫자, 날짜 등은 자동 문자열로 변환
- 출력 포맷을 정확하게 제어하고 싶다면 CONVERT() 또는 CAST()로 명시적 변환이 필수
📌 정리하자면, 이번 강의에서는 SQL Server의 묵시적 형변환 동작 원리와,
날짜 + 정수형 더하기, 문자열과의 결합 사례 등을 실습했습니다.
예상치 못한 결과를 방지하려면 명시적 형변환을 적극 활용하는 것이 바람직합니다.
'SQL Server > 실기 정리' 카테고리의 다른 글
SQL Server 44강 - 문자열 위치 찾기와 부분 추출 함수 (0) | 2025.06.05 |
---|---|
SQL Server 43강 - 문자열 공백 제거와 길이 측정 함수 (0) | 2025.06.05 |
SQL Server 42강 - 문자열 대소문자 변환 함수 (0) | 2025.06.04 |
SQL Server 40강 - 형변환 함수 CAST()와 CONVERT() (2) | 2025.06.04 |
SQL Server 39강 - 문자열 함수와 문자열 결합 방식 (0) | 2025.06.04 |
SQL Server 38강 - JOIN vs 서브쿼리를 통한 컬럼 병합 방식 비교 (0) | 2025.06.04 |