繁体   English   中英

oracle中的“ SELECT 1 FROM…”返回十进制类型

[英]“SELECT 1 FROM … ” in oracle returns a decimal type

我从下面的ORACLE“ SELECT 1 AS X FROM ...”中的示例查询获取数据表。

当我使用dr.Field(“ X”)选择X时,它给了我错误。 我发现它返回为十进制数据类型。

在MSSQL中使用相同的语句没有问题,我有int数据类型。

任何解决方法或解决方案?

Oracle中的整数是精度为0的数字。由于未指定大小(可以大于16),因此将其强制转换为十进制。

尝试将其强制转换为number(16,0),您应该没问题。

对于建议ODP.NET的人们:它也有同样的问题。

您的前端代码错误地自动检测了字段的类型。 您应该可以将其改写为整数。 如果没有使用语言/ etc的更多详细信息,就很难更具体了。

如果您知道该列的类型应为int并假定其不为null:

int x = Convert.ToInt32 (dr.Field ["X"]);

这对于为该列返回int的其他数据库提供程序不会有任何影响。

如果要更改Oracle查询以返回int代替:

SELECT CAST(1 AS INTEGER) FROM ...

我家里没有甲骨文的书,但是显式转换或强制转换为整数可能是最好的选择。 (说到Oracle查询,不是您的C#检索结果,尽管您也可以在那里进行转换。)就Oracle而言,“ 1”是模棱两可的。

为了获取整数而不是十进制,我需要做的是:

从Dual中选择投放(1作为NUMBER(9,0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM