나의 Winding Road

SQL Server CASE WHEN 자동 형변환 확인 본문

개발/Database

SQL Server CASE WHEN 자동 형변환 확인

WindingRoad 2018. 8. 30. 20:57

[2018-08-28 화요일]

* 내용: CASE WHEN 자동 형변환

1. 쿼리

2. 조치 확인

 

 

1. 쿼리


 

* 내용

- 첫번째 CASE 문에 EMP_ID(VARCHAR 타입임에도) SELECT 하지만 자동으로 변환되는 문제

- THEN CONVERT(INT, EMP_ID) 두번째 THEN 의해서 발생

 

SELECT EMP_ID

, CASE

WHEN LEN(EMP_ID) = 5

THEN EMP_ID

WHEN LEN(CONVERT(VARCHAR, CONVERT(INT, EMP_ID))) >= 6 AND EMP_ID <> '00000000'

THEN CONVERT(INT, EMP_ID)

ELSE EMP_ID

END AS CV_EMP_ID

, LEN(EMP_ID)

, LEN(CONVERT(VARCHAR, CONVERT(INT, EMP_ID)))

FROM SAP_ASSET_MASTER

WHERE ISNUMERIC(EMP_ID) = 1

 


 

2. 조치 및 확인


 

* 변경 쿼리

 

SELECT EMP_ID

, CASE

WHEN LEN(EMP_ID) = 5

THEN EMP_ID

WHEN LEN(CONVERT(VARCHAR, CONVERT(INT, EMP_ID))) >= 6 AND EMP_ID <> '00000000'

THEN CONVERT(VARCHAR, CONVERT(INT, EMP_ID))

ELSE EMP_ID

END AS CV_EMP_ID

, LEN(EMP_ID)

, LEN(CONVERT(VARCHAR, CONVERT(INT, EMP_ID)))

FROM SAP_ASSET_MASTER

WHERE ISNUMERIC(EMP_ID) = 1


 



Comments