首页  /  世界杯意大利  /  写sql遇到了一个invalid number错误

写sql遇到了一个invalid number错误

世界杯意大利 2739

社区

基础和管理 帖子详情 写sql遇到了一个invalid number错误 sh09409 2012-04-17 09:52:29 语句select * from A,V where v.SWGLM = a.SWGLM 报invalid number

A是一个表,SWGLM是number(15)

B是一个视图

select E.SWGLM from E

union all select F.SWGLM from F

union all select to_char(G.SWGLM) from G

E.SWGLM是varchar2(32)

F.SWGLM是varchar2(32)

G.SWGLM是number(15)

我写成

select * from A,V where v.SWGLM = to_char(a.SWGLM)

select * from A,V where to_char(v.SWGLM) = to_char(a.SWGLM)

select * from A,V where to_number(v.SWGLM) = a.SWGLM

都没有用

...全文

9500 11 打赏 收藏 写sql遇到了一个invalid number错误 语句select * from A,V where v.SWGLM = a.SWGLM 报invalid number A是一个表,SWGLM是number(15) B是一个视图 select E.SWGLM from E union all select F.SWGLM from F union all select to_char(G.SWGLM) from G E.SWGLM是varchar2(32) F.SWGLM是varchar2(32) G.SWGLM是number(15) 我写成 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 11 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 sh09409 2012-04-17 打赏举报 回复 我不能把数据过滤了。我希望以字符形式比较,就可以解决问题。转数字不适合我现在的情况。

数据是生产数据,不能改的。 啊彪123 2012-04-17 打赏举报 回复 写个方法把非数字型字符过滤即可!

create or replace function isNumber(p_in varchar2) return boolean as

i number;

begin

i:=to_number(p_in);

return true;

exception

when others then

return false;

end ; sh09409 2012-04-17 打赏举报 回复 数据是不能修改的,所以可不可以不让他转换成数字,就是以字符形式比较呢? 啊彪123 2012-04-17 打赏举报 回复 v中有不能转成数字的字符!

with t as(

select 1001 id,'1000'num,'1002 ' name from dual

union all select 1002,'1001','1003 ' from dual

union all select 1003,'1002','1004 ' from dual

union all select 1004,'1003','1005 ' from dual

)

--select a.* from t a,t b where a.id=b.num;

select a.* from t a,t b where a.id=b.name;

sh09409 2012-04-17 打赏举报 回复 没有B,写错了,对b的描述就是V yinan9 2012-04-17 打赏举报 回复 a,v的字段类型呢?和B有什么关系? sh09409 2012-04-17 打赏举报 回复 写错了。

应该V是一个视图

select E.SWGLM from E

union all select F.SWGLM from F

union all select to_char(G.SWGLM) from G

E.SWGLM是varchar2(32)

F.SWGLM是varchar2(32)

G.SWGLM是number(15) simula1314 2012-04-17 打赏举报 回复 是不是你的版本问题啊,测试了一把是正常的啊,pl/sql developer 10G 会自动转换的 啊彪123 2012-04-17 打赏举报 回复 一个是32位,一个15位,当然比较出错了 我心飞翔 2012-04-17 打赏举报 回复 问题很简单,就是存在字符串型的数据,在转换为number时,未成功转换,也就是说这个字符串不是一个有效的数字字符串。

所以这个问题,无论怎么做转换都不能解决,只能查看数据,然后修改数据。

要不就都转换成字符串,应该是没有问题的。 「已注销」 2012-04-17 打赏举报 回复 V的SWGLM是什么 SQL LOADER错误小结 如果最后一个字段是NUMBER类型,换行符会被当作数值的一部分,导致解析错误。解决方法是在控制文件中添加`INTEGER`或`TERMINATED BY WHITESPACE`。例如: ```sql Record 1: Rejected - Error on table DM.TM_WGGHF_... Oracle ORA-01722: invalid number 错误分析 ORA-01722: invalid number错误分析 java.sql.SQLException: Io 异常: Invalid number format for port number java.sql.SQLException: Io 异常: Invalid number format for port number java.sql.SQLException: Invalid number format for port number 端口 + 1521 01-sql invalid number 问题:俩个项目一样的代码一样的sql,其中一个查询报错,本地和测试环境没有问题,生产有问题。 错误日志: ### SQL: SELECT count(*) FROM xx t LEFT JOIN tes1 C2 ON t.aa= C2.aa ### Cause: java.sql....

基础和管理

17,382

社区成员

95,118

社区内容

发帖 与我相关 我的任务 基础和管理 Oracle 基础和管理 复制链接

扫一扫 分享 确定 社区描述 Oracle 基础和管理 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章