안녕하세요. 고민하다 질문드립니다.
음수는 숫자 앞에 - 가, 양수는 숫자 앞에 + 가 붙어 소수점 첫째 자리까지 출력되게하려합니다.
0의경우 +,- 부호없이 0 만 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT TO_CHAR(ROUND(N,1), 'S999.9' ) SELECT TO_CHAR(ROUND(N,1), 'S000.0' ) 도 이용해보고 WITH t AS ( SELECT TO_NUMBER( '0.81111111' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '11.8888888' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '-43.333333' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '-0.333333' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '12.2' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '23' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '0' ) AS N FROM DUAL ) SELECT DECODE(SIGN(N), '1' , '+' ||ROUND(N,1),ROUND(N,1)) AS N FROM T |
이렇게도 해보았으나..
+0.8 이렇게 출력하고 싶지만 +.8 이렇게 출력이됩니다.
0이 생략되는 부분을 해결하고 싶습니다.
+000.8 이런형태 말고 +0.8같이 소수점 앞부분의 0은 한자리만 출력되게 하고싶습니다.
아래사진 N은 원하는 출력값, BEFORE_N은 위의 쿼리의 실행 결과입니다.
도와주시면 감사하겠습니다ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | -- 근데 샘플이 문자형이네요. WITH t AS ( SELECT '0.81111111' AS N FROM DUAL UNION ALL SELECT '11.8888888' AS N FROM DUAL UNION ALL SELECT '-43.333333' AS N FROM DUAL UNION ALL SELECT '-0.333333' AS N FROM DUAL UNION ALL SELECT '12.2' AS N FROM DUAL UNION ALL SELECT '0' AS N FROM DUAL ) SELECT CASE WHEN SIGN(N) = 1 THEN '+' END || RTRIM(TO_CHAR(N, 'FM999,990.9' ), '.' ) N , DECODE(SIGN(N), '1' , '+' ||ROUND(N,1),ROUND(N,1)) AS N FROM T |
아. 제가 짠것에서 AFTER를 구하려던건 아니고요
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT TO_NUMBER( '0.81111111' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '11.8888888' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '-43.333333' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '-0.333333' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '12.2' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '23' ) AS N FROM DUAL UNION ALL SELECT TO_NUMBER( '0' ) AS N FROM DUAL |
그냥 이 데이터에서 원하는 출력값을 구하고 싶었는뎅...
제가 짜보다가 잘 안된것을 올린거였는데 혼란이..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | WITH t AS ( SELECT 0.81111111 n FROM dual UNION ALL SELECT 11.8888888 FROM dual UNION ALL SELECT -43.333333 FROM dual UNION ALL SELECT -0.333333 FROM dual UNION ALL SELECT 12.2 FROM dual UNION ALL SELECT 23 FROM dual UNION ALL SELECT 0 FROM dual ) SELECT n , DECODE(n, 0, '0' , RTRIM(TO_CHAR(n, 'fms990.9' ), '.' )) c FROM t ; |