首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行以下查询时出现获取ORA-01722错误

执行以下查询时出现获取ORA-01722错误
EN

Stack Overflow用户
提问于 2011-09-15 14:02:16
回答 1查看 633关注 0票数 0

在我的实现中使用的一个查询给出了ORA-01722错误。以下是查询。

代码语言:javascript
复制
select ao.account_oid,ao.website_oid,ob.oid,ob.status_code,pi.oid,pi.render_status,ao.invoiced_date
from acct_order ao,order_basket ob, order_line_item oli,order_line_item_xml olix,project_info pi
where ao.oid = ob.account_order_oid and       
  ob.oid = oli.order_basket_oid and
  oli.oid = olix.order_line_item_oid and
  pi.oid = olix.xml_value and 
  olix.xml_key_code='PROJECT_INFO_OID' and      
  pi.oid = 10000450011; // this is not working

注意:“olix.xml_value”也可以包含字符串值。

我修改了它,将"=“运算符替换为"in”运算符,并尝试了,即使这样也失败了。但是如果"in“运算符的值的数目大于1,那么它是有效的。

代码语言:javascript
复制
select ao.account_oid,ao.website_oid,ob.oid,ob.status_code,pi.oid,pi.render_status,ao.invoiced_date
from acct_order ao,order_basket ob, order_line_item oli,order_line_item_xml olix,project_info pi
where ao.oid = ob.account_order_oid and       
  ob.oid = oli.order_basket_oid and
  oli.oid = olix.order_line_item_oid and
  pi.oid = olix.xml_value and 
  olix.xml_key_code='PROJECT_INFO_OID' and      
  pi.oid in (10000450011,10000460011); // This is working. One argument to "in" operator is not working.

所以我在SQLDeveloper上接受了解释,但我无法理解它。有人能帮我弄清楚这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-15 14:08:39

当尝试将字符串转换为数字,但该字符串无法转换为有效数字时,将发生ORA-01722错误。有效数字包含数字'0‘到'9',可能包含一个小数点、字符串开头或结尾的符号(+或-)或'E’或'e‘(如果它是科学记数法中的浮点数)。所有其他字符都是禁止的。

Pi.oid的类型是什么?它是字符串还是数字。如果它是一个字符串,它可能不能被转换成数字(这意味着它有一些禁止的字符)。

同样,如果pi.oid是一个数字,那么您正在做的事情如下所示

代码语言:javascript
复制
pi.oid = olix.xml_value

这是模棱两可的,因为xml_value应该是类似字符串的东西。仔细查看您的查询,并尝试删除与字符串和数字相关的歧义。您的问题将得到解决:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7426488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档