oracle ORA-01481:无效的数字格式模型(将数字转换为字符)

qnyhuwrf  于 2023-05-22  发布在  Oracle
关注(0)|答案(2)|浏览(629)

我很困惑为什么我得到这个错误。我使用了一个函数,它存储一个NUMBER变量并返回一个NUMBER(例如123456)。
我想把它转换成我选择的格式,所以我会使用to_char:

select to_char(total_count_prods('apple'),'1234-56') from dual;

我一直得到这个错误。有什么问题如果我逃跑

select total_count_prods('apple') from dual;

然后我得到以下输出:

123456

如何将其转换为:

1234-56
9w11ddsr

9w11ddsr1#

可以使用SUBSTR

SELECT SUBSTR(total_apples, 1, 4) || '-' || SUBSTR(total_apples, 5)
FROM   (
  SELECT total_count_prods('apple') AS total_apples
  FROM   DUAL
);

REGEXP_REPLACE

SELECT REGEXP_REPLACE(
         total_count_prods('apple'),
         '(\d{2})$',
         '-\1'
       )
FROM   DUAL;

或者,除以100,使用TO_CHAR,并将小数点分隔符设置为-

SELECT TO_CHAR(
         total_count_prods('apple')/100,
         'FM9999D99',
         'NLS_NUMERIC_CHARACTERS=-,'
       )
FROM   dual;

fiddle

sczxawaw

sczxawaw2#

你的函数total_count_prods()返回一个数字,正如你所期望的那样。问题是'1234-56'不是将数字转换为字符串的有效格式模型-正如错误所述。

相关问题