SQL Server/실기 정리

SQL Server 41강 - 묵시적 형변환과 명시적 변환 혼합 사용

코딩하는냥이 2025. 6. 4. 14:53
반응형

이번 글에서는 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의 묵시적 형변환 동작 원리와,
날짜 + 정수형 더하기, 문자열과의 결합 사례 등을 실습했습니다.
예상치 못한 결과를 방지하려면 명시적 형변환을 적극 활용하는 것이 바람직합니다.