sql >> データベース >  >> RDS >> Oracle

数値を単語に変換する場合のORA-01830

    関数を作成できます。

    CREATE OR REPLACE FUNCTION big_amt_in_words (p_input VARCHAR2) RETURN VARCHAR2
    IS
       v_running_input NUMBER;
       v_num NUMBER;
       v_amt_in_words VARCHAR2(2000);
    BEGIN
       v_running_input := P_input;
       FOR i IN (
                 SELECT RPAD(1, (rownum*3)+1, 0) num_value,
                        CASE LENGTH(RPAD(1, (rownum*3)+1, 0))
                            WHEN 4 THEN 'THOUSAND'
                            WHEN 7 THEN 'MILLION'
                            WHEN 10 THEN 'BILLION'
                            WHEN 13 THEN 'TRILLION'
                            WHEN 16 THEN 'QUADRILLION'
                            WHEN 19 THEN 'QUINTILLION'
                            WHEN 22 THEN 'SEXTILLION'
                            WHEN 25 THEN 'SEPTILLION'
                            WHEN 28 THEN 'OCTILLION'
                        END place_value
                  FROM DUAL
               CONNECT BY rownum < 10
                 ORDER BY rownum desc)
        LOOP
            v_num := TRUNC(v_running_input/i.num_value,0);
            IF v_num > 0 THEN
                v_amt_in_words := v_amt_in_words||' '||TO_CHAR(TO_DATE(v_num,'J'), 'JSP')||' '||i.place_value;
                v_running_input := v_running_input - (v_num * i.num_value);
            END IF;
        END LOOP;
        v_amt_in_words := v_amt_in_words||' '||TO_CHAR(TO_DATE(TRUNC(v_running_input),'J'), 'JSP')
                          ||' AND '||UPPER(TO_CHAR(TO_DATE((ROUND(v_running_input-TRUNC(v_running_input),2)*100),'J'),'JSP'))||' CENTS';
        RETURN TRIM(v_amt_in_words);
    END;
    /
    

    使用するには

    SELECT BIG_AMT_IN_WORDS(65763245345658.12) amt_in_words 
      FROM DUAL;
    
    Output
    ---------------------------------------------
    SIXTY-FIVE TRILLION SEVEN HUNDRED SIXTY-THREE BILLION TWO HUNDRED FORTY-FIVE MILLION THREE HUNDRED FORTY-FIVE THOUSAND SIX HUNDRED FIFTY-EIGHT AND TWELVE CENTS
    


    1. フレンドリーなURLのキリル文字の問題

    2. 2つのテーブルの違いを識別する最も速い方法は?

    3. ストアドプロシージャMySQLでの動的クエリの作成

    4. AWSDatapipeline-アクセント付き文字の問題