안녕하세요. 고민하다 질문드립니다.
음수는 숫자 앞에 - 가, 양수는 숫자 앞에 + 가 붙어 소수점 첫째 자리까지 출력되게하려합니다.
0의경우 +,- 부호없이 0 만 출력
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은 위의 쿼리의 실행 결과입니다.
도와주시면 감사하겠습니다ㅠㅠ
-- 근데 샘플이 문자형이네요. 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를 구하려던건 아니고요
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
그냥 이 데이터에서 원하는 출력값을 구하고 싶었는뎅...
제가 짜보다가 잘 안된것을 올린거였는데 혼란이..
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 ;