oracle中to_char 的用法求解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中to_char 的用法求解相关的知识,希望对你有一定的参考价值。
现在有一个表a,有一个字段id,类型为number
insert into a values(to_char(100.00,'999,999.00'));
insert into a values(to_char(1000.00,'999,999.00'));
第一行没问题,可以插入,第二行就会出现无效数字的错误
我要怎样修改to_char方法 来实现第二行sql,
求高手
如果你不加FM的话,插入之后会有空格在数字前面,以你写的100.00举例,这样你插入之后100之前就会有3个空格;假如你插入0.00的话,小数点前面那个0是显示不出来的,你看到的应该是 .00 。
你这样写是没有问题的,具体报的错误能贴出来么?追问
这个不会出现0.00的数据,因为数据库设置的不能为空,我是想实现
insert into a values(to_char(1000.00,'999,999.00'));
这行sql,但是实现不了,报的错误:ORA-10722:无效数字
这个说的够明确了么,能解决么?
你这个字段是什么类型的?如果是数字的话由于在1000.00的时候转换为了1,000.00,这样才会报无效数字,因为逗号分隔符不属于数字,你需要把字段类型改成字符类型。并且即使你插入的时候不会有0.00,还是建议你把FM加上,这样不会出现空格的问题。
参考技术A 因为你的a表中的字段是数字型的,所以保存的只能是数值不能保存为带格式的(实际上带格式的数字都是字符串)
第一个可以是因为转换之后是一个可以转换为数值的字符串,而第二个则无法转换为数值。
你应该是需要展现的时候才使用to_char转换为目标格式。 参考技术B 你这个ID字段应该定义成varchar2,而不是number。 参考技术C 类型为number为啥要to_char啊 应该to_number啊追问
因为我要格式化成100,000,000.00这种格式的 to_number能实现么?
追答当然啊
追问把你的sql贴出来 我看看怎么实现的
oracle(cast , to_char , to_date )用法
cast :
cast(要转换的值 AS 转换的类型)
From | To BINARY_FLOAT, BINARY_DOUBLE | To CHAR, VARCHAR2 | To NUMBER | To DATETIME, INTERVAL | To NCHAR, NVARCHAR2 |
---|---|---|---|---|---|
BINARY_FLOAT, BINARY_DOUBLE |
yes |
yes |
yes |
no |
yes |
CHAR, VARCHAR2 |
yes |
yes |
yes |
yes |
no |
NUMBER |
yes |
yes |
yes |
no |
yes |
DATETIME, INTERVAL |
no |
yes |
no |
yes |
yes |
NCHAR, NVARCHAR2 |
yes |
no |
yes |
no |
yes |
CAST(‘123.4567‘ AS NUMBER(10,2))
returns the value 123.46
.
通过上面的描述,我们就可以知道CAST可以将一种类型转换为另外一种类型。
比如,将字符串类型转换为NUMBER(10,2)类型,而不仅仅是限于使用用to_number、to_char()以及to_date()类型,上述表Table 3-1代表CAST是否能够用于该类型的相互转换。
例子调用:
ChenZw> SELECT CAST(‘123.4567‘ AS NUMBER(10,2)) AS NUM FROM DUAL; 输出123.46
to_char:
转换成字符串类型
SELECT TO_CHAR(sysdate, ‘YYYY/MM/DD HH24:mi:ss‘) FROM DUAL
sysdate:要转换的值 ,后面的是转的类型(字符串类型的)
to_date:把值转换成日期类型的。
SELECT TO_DATE(‘2007-06-12 10:00:00‘, ‘YYYY/MM/DD HH24:mi:ss‘) FROM DUAL --> 输出 2007/6/12 星期二 上午 10:00:00
以上是关于oracle中to_char 的用法求解的主要内容,如果未能解决你的问题,请参考以下文章