您的格式代码00.0000
应包括小数点后第四位23.234
;它一直对我有用。我正在使用 Oracle 11。
我尝试做时遇到的问题CAST(TO_CHAR(23.234, '00.0000') AS CHAR(7))
是错误ORA-25137: Data value out of range
。发生这种情况是因为TO_CHAR
返回了一个长度为 8 的字符串:
SQL> SELECT '[' || TO_CHAR(23.234, '00.0000') || ']' FROM DUAL
'['||TO_CH
----------
[ 23.2340]
TO_CHAR
如果数字为负数,则在开头留一个空格,在这种情况下,它将在那里放一个减号。FM
您可以通过在格式字符串中使用修饰符来去掉前导空格:
SQL> SELECT '[' || TO_CHAR(23.234, 'FM00.0000') || ']' FROM DUAL
'['||TO_CH
----------
[23.2340]
这就是说“试试这个”的方式很长 - 唯一的变化是FM
格式TO_CHAR
字符串中的:
CREATE OR REPLACE VIEW viewA ("col1", "col2") AS
SELECT DISTINCT
CAST("col1" AS CHAR(1)),
CAST(to_char("col2",'FM00.0000') AS char(7))
FROM tableA
最后一点:用双引号将列名括起来会使它们区分大小写,这通常会导致麻烦。如果可以的话,我建议你去掉双引号。