我有一个OracleCommand,可以使用OracleConnection在C#应用程序中从oracle表中选择NUMBER类型的最大值。当代码被执行时,我得到最后带M个字母的值!所以如果我们假设最大值是2544,那么我得到2544M作为最大值。
这是代码:
OracleCommand command = new OracleCommand("SELECT GREATEST(TA_Counts) FROM Test3.Trn_Sfd", Con2);
Con2.Open();
var returvalue = command.ExecuteScalar();
为什么值不是以2544 int值的形式返回?!
答案 0 :(得分:1)
因为该值为decimal
。这是由于表中列的类型而发生的。您可以通过查看this表来验证这一点。如果您的数据类型是整数或浮点数,则读者返回的.net类型为decimal
。
答案 1 :(得分:1)
最伟大的并没有给你表的最大值:
SQL> with t as (
2 select 1 id, 2 value from dual union all
3 select 2 id, 4 value from dual
4 )
5 select GREATEST(id)
6 from t
7 /
GREATEST(ID)
------------
1
2
GREATEST
函数为您提供多个值中的最大值,例如:
SQL> ed
Wrote file afiedt.buf
1 with t as (
2 select 1 id, 2 value from dual union all
3 select 2 id, 4 value from dual
4 )
5 select GREATEST(id, value)
6* from t
SQL> /
GREATEST(ID,VALUE)
------------------
2
4
您必须使用max函数:
SQL> ED
Wrote file afiedt.buf
1 with t as (
2 select 1 id, 2 value from dual union all
3 select 2 id, 4 value from dual
4 )
5 select max(id)
6* from t
SQL> /
MAX(ID)
----------
2
您可能需要使用隐式转换:
(int)command.ExecuteScalar()
使用您需要的类型