从c#中的oracle表中选择最大值

时间:2014-08-10 08:26:55

标签: c# sql oracle max

我有一个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值的形式返回?!

2 个答案:

答案 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()

使用您需要的类型