개발/SQL SERVER
MSSQL UNION ALL 데이터 형
whatever , whoever
2022. 9. 6. 15:00
반응형
MSSQL 에서 UNION ALL 사용 시 컬럼타입은 첫번째 SELECT 문의 데이터형을 따라간다.
예를 들어 다음과 같은 경우 소수점 한자리 값으로 동일하게 출력된다.
select 1.0 as num
union all
select 2 as num
출력결과
그런데 만약 연산이 들어간다면 어떻게 될까?
select 1.0 as num
union all
select floor(sum(200000.0) / 287) as num
출력결과
신기하게도 두번째 SELECT 의 결과값에 영향을 받는다.
이런 경우 소수점 값이 있다면 다른 SELECT문의 값도 같이 반올림되어 나타난다.
결론. 연산값이 있는 UNION ALL 의 경우 데이터형을 명시하도록 하자
select 1.0 as num
union all
select convert(decimal(18,1) ,floor(sum(200000.0) / 287)) as num
반응형