僅此作為筆記
分頁差異
oracle |
<select id="select" parameterClass="java.util.Map" resultClass="com.bobo.code.model.LoginMember"> select * from (select ROWNUM rn , D.* FROM ( select <include refid= "selectSql" ></include> <include refid= "pageCondition" ></include> order by A.t_crt_tm DESC ) D <![CDATA[ WHERE ROWNUM <= #maxRowNum:VARCHAR# ]]> ) <![CDATA[ WHERE rn > #minRowNum:VARCHAR# ]]> </select>
|
mysql |
<select id="select" parameterClass="java.util.Map" resultClass="com.bobo.code.model.LoginMember"> select <include refid= "selectSql" ></include> <include refid= "pageCondition" ></include> limit #minRowNum:VARCHAR# , #pageSize:VARCHAR# </select>
|
因為oracle分頁需要3個select 達到最佳性能,具體原因自行百度
而mysql分頁基本語句如下
收到客戶端{pageNo:1,pagesize:10} select * from table limit (pageNo-1)*pageSize, pageSize; 收到客戶端{pageNo:5,pageSize:30} select * from table limit (pageNo-1)*pageSize,pageSize;
所以仔細分析差異后, 還是使用oracle的參數,那么mysql的分頁條件就變成
表名差異
oracle是不關心表名大小寫的, 但是mysql卻大小寫敏感
oracle | mysql |
INSERT INTO WEB_KING_LOGIN_MEMBER | INSERT INTO web_king_login_member |
日期差異
oracle | mysql timestamp |
sysdate | now() |
TO_CHAR(t_crt_tm, 'YYYY-MM-DD HH24:MI:SS') AS tCrtTm, | FROM_UNIXTIME( UNIX_TIMESTAMP(t_upd_tm) , '%Y-%m-%d %H:%i:%s') AS tCrtTm, |
A.t_crt_tm = TO_DATE(#cCrtTm:VARCHAR#,'yyyy-mm-dd hh24:mi:ss'); | A.t_crt_tm = unix_timestamp(#cCrtTm:VARCHAR#); |
uuid差異
oracle | mysql |
SYS_GUID() | REPLACE(UUID(),"-","") |
like差異
oracle | mysql |
A.c_desc like '%' || #cDesc:VARCHAR# || '%'
|
A.c_desc like concat('%', #cDesc:VARCHAR#, '%')
|
其它差異
MySQL與Oracle 差異比較之三函數=>https://www.cnblogs.com/HondaHsu/p/3641190.html