【问题标题】:Oracle MySQL equivalent codeOracle MySQL 等效代码
【发布时间】:2012-07-08 18:40:28
【问题描述】:

执行以下操作的等效 Oracle(11g) 代码是什么:

对于 MySQL

ps = con.prepareStatement("select SQL_CALC_FOUND_ROWS from student_details where UPPER(name) like UPPER(?) limit " + offset + ", " + noOfRecords);

rs = ps.executeQuery("SELECT FOUND_ROWS()");

【问题讨论】:

    标签: mysql database oracle pagination


    【解决方案1】:

    试试这样:

    SELECT *
    FROM (select t.*, rownum rn, count(*) over() as SQL_CALC_FOUND_ROWS
            from student_details t
           where UPPER(name) like UPPER(?))
    WHERE rn <= offset 
    

    “SQL_CALC_FOUND_ROWS”中返回的值将是在没有WHERE rn &lt;= offset 子句的情况下将被选中的记录数

    【讨论】:

      【解决方案2】:

      我在您的声明中看到的唯一两个特定于 RDBMS 的内容是“upper()”和“limit”。

      这里是使用 Oracle “rownum” 作为 “limit” 解决方法的链接:

      “Upper()”在 Oracle 中应该可以正常工作。

      【讨论】:

      • SQL_CALC_FOUND_ROWS 也可能比 count(*) 更好
      • SQL_CALC_FOUND_ROWS 和 SELECT FOUND_ROWS() 怎么样?
      猜你喜欢
      • 2020-04-04
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2011-11-18
      • 2021-03-27
      • 1970-01-01
      相关资源
      最近更新 更多