我有2个连接oracle使用相同的查询,但返回不同的结果:
SELECT TO_CHAR(DATE_TIME, 'yyyy-MM-dd hh:mi:ss' ) myDateTime,
t.*
FROM TMI_ISD_AUDIT_TRAIL t
WHERE NVL(USER_ID,'') LIKE '%'
AND NVL(Action,'') LIKE '%'
AND NVL(success,'') LIKE '%%'
AND TO_CHAR(DATE_TIME, 'yyyy-MM-dd' ) LIKE '%'
AND rownum <100
答案 0 :(得分:0)
通过Oracle 12,您可以使用fetch first代替ROWNUM进行订购
ROWNUM在ORDER BY之前进行求值,而不是应使用ROWNUM。
SELECT TO_CHAR(DATE_TIME, 'yyyy-MM-dd hh:mi:ss' ) myDateTime,
t.*
FROM TMI_ISD_AUDIT_TRAIL t
WHERE NVL(USER_ID,'') LIKE '%'
AND NVL(Action,'') LIKE '%'
AND NVL(success,'') LIKE '%%'
AND TO_CHAR(DATE_TIME, 'yyyy-MM-dd' ) LIKE '%'
ORDER BY TO_CHAR(DATE_TIME, 'yyyy-MM-dd hh:mi:ss' )
FETCH FIRST 100 ROWS ONLY;
fetch first子句可以根据需要与结果offset子句结合使用,它限制了结果集中返回的行数。通常,与第一个ORDER BY子句结合使用时,fetch first子句有时仅可用于从其他较大的结果集中检索几行。使用此子句可以提高效率。另外,它可以使应用程序的编程更简单。