C# 从c中的oracle表中选择最大值
我有一个OracleConnection命令,用于在使用OracleConnection的C应用程序中从oracle表中选择type NUMBER的最大值。当代码被执行时,我得到的值末尾有M个字母!所以如果我们假设最大值是2544,那么我得到2544M作为最大值 代码如下:C# 从c中的oracle表中选择最大值,c#,sql,oracle,max,C#,Sql,Oracle,Max,我有一个OracleConnection命令,用于在使用OracleConnection的C应用程序中从oracle表中选择type NUMBER的最大值。当代码被执行时,我得到的值末尾有M个字母!所以如果我们假设最大值是2544,那么我得到2544M作为最大值 代码如下: OracleCommand command = new OracleCommand("SELECT GREATEST(TA_Counts) FROM Test3.Trn_Sfd", Con2); Con2.Open(); v
OracleCommand command = new OracleCommand("SELECT GREATEST(TA_Counts) FROM Test3.Trn_Sfd", Con2);
Con2.Open();
var returvalue = command.ExecuteScalar();
为什么值不作为2544 int值返回 因为该值是十进制的。发生这种情况的原因是表中列的类型。您可以通过查看表来验证这一点。如果数据类型是integer或float,则读取器返回的.net类型为decimal 最大值不会为您提供表的最大值:
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
最大值函数提供多个值中的最大值,如:
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()
使用你需要的类型