지난번 일부 값을 계산못해주는 부분이 발생해서,, 아래와 같이 수정했는데... 오버플로 오류가 발생하네요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | WITH t AS ( SELECT '2000152003' chitemseq, '6.95E+05' chitem1, '8.01E+05' chitem2, '4.82E+05' chitem3 UNION ALL SELECT '2000152003' , '6.95E+11' , '8.01E+05' , '4.82E+05' ) SELECT chitemseq , chitem1, chitem2, chitem3 , x , CASE chitemseq WHEN '2000152003' THEN REPLACE (ROUND(x, -5), 'e+0' , 'E+' ) --WHEN '2000152003' THEN CAST(CAST(x / POWER(10, y) AS NUMERIC(3,2)) AS VARCHAR) + 'E+'+CAST(RIGHT('0'+ y, 2) AS VARCHAR) END z FROM ( SELECT chitemseq , chitem1, chitem2, chitem3 , ( CAST (chitem1 AS FLOAT ) + CAST (chitem2 AS FLOAT ) + CAST (chitem3 AS FLOAT ) ) / 3 AS x , FLOOR(LOG10( ( CAST (chitem1 AS FLOAT ) + CAST (chitem2 AS FLOAT ) + CAST (chitem3 AS FLOAT ) ) / 3)) AS y FROM t ) a ; |
REPLACE(ROUND(x, -5), 'e+0', 'E+')
이렇게 표현을 하면,, 값이 700000 이렇게 나와서
그래서 CAST(CAST(x / POWER(10, y) AS NUMERIC(3,2)) AS VARCHAR) + 'E+'+CAST(RIGHT('0'+ y, 2) AS VARCHAR)
이런 표현식으로 변경했는데 문제는,,
data값중에 10승 이상이 생기면서 오버플로 에러가 밸생하네요.. 6.95E+11 이럴경우 POWER부분에서 에러발생하네요..
어떻게 하는게 좋을까요..