执行以下操作的等效 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()");
执行以下操作的等效 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()");
试试这样:
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 <= offset
子句将被选择的记录数
我在您的声明中看到的唯一两个特定于 RDBMS 的东西是“upper()”和“limit”。
这是使用 Oracle “rownum” 作为 “limit” 解决方法的链接:
“Upper()”在 Oracle 中应该可以正常工作。