Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在输入为数字形式时以文本形式输出_Oracle_Plsql - Fatal编程技术网

Oracle 如何在输入为数字形式时以文本形式输出

Oracle 如何在输入为数字形式时以文本形式输出,oracle,plsql,Oracle,Plsql,如何获得字符/字母形式的数字/数字输出? 就像我输入的一样:-1234 然后输出应该是:-一二三四和(在其他条件下)一 一千二百三十四。试试这个 select to_char(to_date(1234, 'j'), 'jsp') from dual 输出将是 一千二百三十四试试这个 select to_char(to_date(1234, 'j'), 'jsp') from dual 输出将是 一千二百三十四个执行下面的函数 CREATE OR REPLACE FUN

如何获得字符/字母形式的数字/数字输出? 就像我输入的一样:-1234 然后输出应该是:-一二三四和(在其他条件下)一 一千二百三十四。试试这个

select to_char(to_date(1234, 'j'), 'jsp') from dual
输出将是 一千二百三十四

试试这个

select to_char(to_date(1234, 'j'), 'jsp') from dual
输出将是
一千二百三十四个执行下面的函数

            CREATE OR REPLACE FUNCTION NUMTOWORDS (P_IN IN NUMBER)
               RETURN VARCHAR2
            IS
               V_WORDS    VARCHAR2 (20) := '';
               V_CHAR     VARCHAR2 (20) := '';
               V_LENGTH   NUMBER;

               TYPE ARRAY_TYPE IS VARRAY (10) OF VARCHAR2 (10);
               V_ARRAY    ARRAY_TYPE := ARRAY_TYPE ('ZERO', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE');
            BEGIN
               SELECT   LENGTH (TO_CHAR (P_IN)) INTO V_LENGTH FROM DUAL;

               FOR I IN 1 .. V_LENGTH
               LOOP
                  V_CHAR := V_ARRAY ( (TO_NUMBER (SUBSTR (TO_CHAR (P_IN), I, 1)) + 1));
                  V_WORDS := CONCAT (V_WORDS, CONCAT (V_CHAR, ' '));
               END LOOP;

               RETURN TRIM (V_WORDS);
            END;

“”从双目录中选择NUMTOWORDS(674)

执行下面的函数

            CREATE OR REPLACE FUNCTION NUMTOWORDS (P_IN IN NUMBER)
               RETURN VARCHAR2
            IS
               V_WORDS    VARCHAR2 (20) := '';
               V_CHAR     VARCHAR2 (20) := '';
               V_LENGTH   NUMBER;

               TYPE ARRAY_TYPE IS VARRAY (10) OF VARCHAR2 (10);
               V_ARRAY    ARRAY_TYPE := ARRAY_TYPE ('ZERO', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE');
            BEGIN
               SELECT   LENGTH (TO_CHAR (P_IN)) INTO V_LENGTH FROM DUAL;

               FOR I IN 1 .. V_LENGTH
               LOOP
                  V_CHAR := V_ARRAY ( (TO_NUMBER (SUBSTR (TO_CHAR (P_IN), I, 1)) + 1));
                  V_WORDS := CONCAT (V_WORDS, CONCAT (V_CHAR, ' '));
               END LOOP;

               RETURN TRIM (V_WORDS);
            END;

“”从双目录中选择NUMTOWORDS(674)

请注意,这只适用于5373484以下的值。这可能就是OP所需的全部内容。您可以直接使用,而无需在SP中选择,例如,to_char(to_date(1234,'j'),'jsp'),请使用过程程序进行解释。。感谢您发布要在其中使用此功能的示例SP。然后我会补充和解释you@D'可能会看到Gaj之前的评论(在10:21Z)-您可以将
赋给_char(to_date(1234,'j'),'jsp')
赋给过程中的一个变量。请注意,这只适用于5373484以下的值。这可能就是OP所需的全部内容。您可以直接使用,而无需在SP中选择,例如,to_char(to_date(1234,'j'),'jsp'),请使用过程程序进行解释。。感谢您发布要在其中使用此功能的示例SP。然后我会补充和解释you@D'可能会看到Gaj之前的评论(在10:21Z)-您可以将
分配给_char(to_date(1234,'j'),'jsp')
分配给过程中的一个变量。