当前位置:首页 » 编程语言 » sql无效数字文字
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql无效数字文字

发布时间: 2022-05-22 05:25:59

A. sql语句的联合查询,提示无效数字

是连接字符串不能用+;
换成'%' || a.sys_name || '%'试试。

B. 把表A的内容复制到B中,执行SQL语句时提示ora-01722无效数字

这么插入数据的时候要保证相对应的字段意义对应,比如你的一地个表有个id字段,对应第二张表的pid字段
那么写法就是
insert into table1(id) select pid from table2;
数据类型长度可以不同,但是数据类型的大类必须相同否则无法是插入,比如数字类,字符类等等,但是1表的数据类型的允许长度不能小于2表数据的实际长度。

C. java.sql.SQLException: ORA-01722: 无效数字

一个查询 select to_number(c.name) as srvtype, value as typename from sys_code c where c.srvclass=9 --srvclass为字符型
一直工作得很好,但突然一天返回错误ORA-01722 invalid number。由于条件srvclass字段是varchar2类型,就想当然地以为是ORACLE的bug(恰巧上周刚确认了ORACLE的一个查询bug),将条件改写成c.srvclass='9'后,查询就又能运行了。

事情虽然过去了,可总觉得有点不对劲。首先ORACLE不可能出现这么简单的BUG;其次就算是BUG,返回的错误提示也不应该是 invalid number。按理说,即使ORACLE不能自动完成类型转换而要求写成 srvclass='9',那么对srvclass=9这种写法的错误提示也应该是invalid character。但由于直觉作怪,也就没有深究

正好space6212提出了他对bug解释的疑问,我就从头进行检查,才发现错误的根本原因是:ORACLE将where c.srvclass=9解释为where to_number(c.srvclass)=9
1)以前执行SQL时,ORACLE进行全表扫描,对每行的srvclass都转换为number型进行比较.以前表中的srvclass的取值只有字符0到9,所以没有出错;
2)后来表中加入了新数据,srvclass的取值都是字母串,ORACLE进行全表扫描时,对新行上srvclass的to_number转换当然就返回ORA-01722 invalid number了。

D. SQL语句一直报无效数字的错,为什么

SELECT COUNT(IN_DATE)
FROM CAR_GOODS_INFO
WHERE TO_DATE(IN_DATE, 'yyyy-MM-dd HH24:mi:ss') BETWEEN
TO_DATE('2014-04-25 00:00:00', 'yyyy-MM-dd HH24:mi:ss') AND
TO_DATE('2014-04-25 23:59:59', 'yyyy-MM-dd HH24:mi:ss')
GROUP BY SUBSTR(IN_DATE, 12, 2);
改成这样子,你最后又把IN_DATE当做date用了

E. 安装sql 2012安装到最后一步,它说无效数字签名,cab文件损坏

*\2052_CHS_LP\redist\VisualStudioShell\VSSetup
右键文件夹里面的cab文件,属性 --选择数字签名,双击签名列表里面的信息 在弹出窗口中点击查看证书,然后看下有效期是否包含你的当前时间,如不包含,把系统时间改到有效期内!

F. SQL为什么会报出“无效数字错误”

在表 etl_rdm.odm_pa_bal_int_bak_20150331 里,project_id有可能存在不是数字的记录行。

G. SQL语句中比较时间时提示无效数字,报错

'yyyy-mm-dd'是不能转换成数字的,比较大小时需要转换成数字,转换失败,所以报错。
建议如下:
首先是#ftime1# 和 #ftime2#是什么格式?要改成YYYYMMDD格式,因为这样的能够转换成数字;
然后to_char(fsigndate,'yyyy-mm-dd') 改成 to_char(fsigndate,'YYYYMMDD')。
这样就没有问题了。

H. SQL中,使用NVL函数,报错:ora-01722:无效数字

nvl 是用来 当数据库字段为空时,强制指定栏位的值。 如nvl(abc,0) 表示abc为空的时候,返回值为0 ,可以先用select 的方式把影响的行查出来,看是否where 语句错误,如果没有错,再检查update 部分的语句是否不正确,很简单就能排查问题的 。

I. 下面这段SQL提示“无效的数字文字”,怎么修改

SELECT COUNT(IN_DATE)
FROM CAR_GOODS_INFO
WHERE TO_DATE(IN_DATE, 'yyyy-MM-dd HH24:mi:ss') BETWEEN
TO_DATE('2014-04-25 00:00:00', 'yyyy-MM-dd HH24:mi:ss') AND
TO_DATE('2014-04-25 23:59:59', 'yyyy-MM-dd HH24:mi:ss')
GROUP BY SUBSTR(IN_DATE, 12, 2);
改成这样子,你最后又把IN_DATE当做date用了

J. sql删除时候提示无效数字 但另一张表不提示 数据类型都一样

sqlserver里

你看下你第一条的那个t_job_experience表里的id列

其他行中应该有不为数字的列,比如字母,汉字,标点等,所以这个时候数据库隐性的认为你传的那一串数字不是字符型,而是数字型

所以还是要加单引号的

随便做个测试,你可以自己试验一下,分步执行以下几条语句

createtablet(idchar(10))
insertintotvalues('123')
select*fromtwhereid='123'
select*fromtwhereid=123
insertintotvalues('a123')
select*fromtwhereid='123'
select*fromtwhereid=123