【问题标题】:select max value from oracle table in c#在c#中从oracle表中选择最大值
【发布时间】:2014-08-10 16:44:29
【问题描述】:

我有一个 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();

为什么 value 不作为 2544 int 值返回?!

【问题讨论】:

    标签: c# sql oracle max


    【解决方案1】:

    因为值是decimal。发生这种情况是由于表中列的类型。您可以查看this 表来验证这一点。如果您的数据类型是整数或浮点数,则阅读器返回的 .net 类型为 decimal

    【讨论】:

      【解决方案2】:

      Greatest 不会为您提供表的最大值:

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

      使用你需要的类型

      【讨论】:

        猜你喜欢
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 2020-05-03
        • 1970-01-01
        相关资源
        最近更新 更多