暂无图片
oracle :用to_number函数将日期转为数字,报无效数字,日期类型为varchar2,有什么办法可以解决?
我来答
分享
暂无图片 匿名用户
oracle :用to_number函数将日期转为数字,报无效数字,日期类型为varchar2,有什么办法可以解决?

oracle:用to_number函数将日期转为数字,报无效数字,日期类型为varchar2,有什么办法可以解决?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
JiekeXu
暂无图片
SQL> create table test.test1 (itime varchar2(30));

Table created.

SQL> insert into test.test1 values('20220113');

1 row created.

SQL> commit;

Commit complete.

SQL> select itime from test.test1;

ITIME
------------------------------
20220113

SQL> select to_number(itime) from test.test1;

TO_NUMBER(ITIME)
----------------
        20220113
复制

需要注意的是,被转换的字符串必须符合数值类型格式,如果被转换的字符串不符合数值型格式,Oracle 将抛出错误提示

SQL> insert into test.test1 values('20220113 13:08:00');

1 row created.

SQL> commit;

Commit complete.

SQL> select itime from test.test1;

ITIME
------------------------------
20220113
20220113 13:08:00

SQL> select to_number(itime) from test.test1;
ERROR:
ORA-01722: invalid number


no rows selected
复制

这样不符合的字符就会报无效的数字。无过多研究,仅供参考!

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
严少安
暂无图片

不能直接转,可以先将日期用to_date转成日期格式,再按您的格式要求转成对应的形式

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

你这是字符串转数字而已,当然要遵从字符串转数字的规则,如果字符串里不是数值当然会报错。
你先把你的日期字符串格式内容发出来,再来看怎么转换

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

如果版本是12.2以后,可以用validate_conversion函数,该函数语法如下:

validate_conversion(表达式或字段 as number), 如果可以正常转换,函数返回1,否则返回0。

例如要对T表的a字段进行转换,可以这样写:select to_number(a) from t where validate_conversion(a as number)=1; 这样无法转换的记录便被屏蔽了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
什么是Oracle的共享池?
回答 1
已采纳
共享池(sharedpool)是Oracle缓存一些“程序”数据的地方。在解析一个查询时,解析得到的结果就缓存在那里。在完成解析整个查询的任务之前,Oracle会搜索共享池,看看这个工作是否已经完成。
请教相对11g的多实例,19c的多pdb会减少资源占用吗?
回答 1
资源使用情况会小的,至少少多少,不好说
Oracle数据库中如果两表是等值连接,为什么不建议走排序合并连接?
回答 1
已采纳
因为排序合并连接需要将两个表放入PGA中,而HASH连接只需要将驱动表放入PGA中,排序合并连接与HASH连接相比,需要耗费更多的PGA。即使排序合并连接中有一个表走的是INDEXFULLSCAN,另
Flashback database是否需要archivelog
回答 2
已采纳
我查了官网,也是这个说法。有的概念只要记住就行了,深究看来也没必要。另外,FLASHBACKTABLE时,应用的不是FLASHBACKLOG,而是UNDO。
Oracle 怎么查表空间自动扩展限制的大小呢?AUTOEXTEND ON NEXT 200M
回答 1
1、查询语句selecttablespacename,sum(bytes)/1024/1024/1024currentsizeGB,sum(maxbytes)/1024/1024/1024maxsiz
oracle 数据库的常用字符集是UTF-8还是GBK?
回答 2
已采纳
图形化安装默认utf8.但是大多数人选择gbk2312
关于生成修改日志,临时表是怎样做的?
回答 1
已采纳
在OracleDatabase12c中,临时表的undo处理与之前的版本有着明显区别,所对针对这个问题分为两部分回答:12c之前与12c之后。1、12c之前:临时表的数据块不会生成redo,因此,对临
CBO分几种模式,有什么区别,如何设定查看?
回答 4
已采纳
PARAMETERNAMEORDPVALIDVALUEISDEFAoptimizermode1RULEoptimizermode2CHOOSEoptimizermode3ALLROWSoptimize
Oracle有取视图结构的解决方法吗?
回答 2
路过
Oracle RAC+DG在备库不建库情况下,为什么ASM不能创建文件?
回答 2
最好贴个图上来,asm里面就没有touch或者create命令,所以不能创建普通文件。