一. 项目已用到 oracle 函数的转换 1. Oracle 中的 TO_DATE () 示例: select * from admadjustmoney t where t.sendtime> to_date(?,'yyyy-mm-dd hh24:mi:ss') and t.sendtime< to_date(?,'yyyy-mm-dd hh24:mi:ss')
转换后:
SELECT *
FROM `ADMADJUSTMONEY` t
WHERE t.SENDTIME > STR_TO_DATE(sysdate(), '%Y-%m-%d %h:%i:%s') AND
t.SENDTIME < STR_TO_DATE(sysdate(), '%Y-%m-%d %h:%i:%s') 注意表名字段名的大小写 MYSQL 大小写敏感 sql 统一大写 hql 统一小写 2. Oracle 中的 nvl () 示例 : select distinct a.id,a.parentId,a.description,a.name,a.status, NVL(ur.roleid,'') AS roleid from admrole a left join admuserrole ur on (a.id = ur.roleid and ur.userid = ? and ur.status = 1) where a.status = ?
转换后:
select distinct a.id,a.parentId,a.description,a.name,a.status, IFNULL(ur.roleid,'') AS roleid from admrole a left join admuserrole ur on (a.id = ur.roleid and ur.userid = ? and ur.status = 1) where a.status = ? 3. Oracle 中的 decode () 示例:
SELECT DECODE(MAX(PIECECODE), NULL, 0, MAX(PIECECODE)) AS PIECECODE FROM PUBPAGEPIECE WHERE 1=1
转换后:
SELECT if(MAX(PIECECODE) IS NULL, 0, MAX(PIECECODE)) AS PIECECODE FROM PUBPAGEPIECE WHERE 1=1
或者用 case when 的标准写法
SELECT CASE WHEN MAX(PIECECODE) IS NULL THEN 0 WHEN MAX(PIECECODE) IS NOT NULL THEN MAX(PIECECODE) END AS PIECECODE
FROM PUBPAGEPIECE WHERE 1=1 4. Oracle 中的 substr () 示例: WHERE t.aid = v.aid and t.province = v.province and t.city = v.city and t.wid = w.id AND w.startdate>=to_date( substr(?,1,10) ,'yyyy-MM-dd') and w.stopdate= STR_TO_DATE ( substring (?,1,10) , '%Y-%m-%d' ) and w.stopdate 0 and status = 1 and operTime >= ADD_MONTHS(TRUNC(SYSDATE,'mm') ,-1) and operTime < TRUNC(SYSDATE,'mm') group by gene , geneType ,accountId
转换后:
from PUBCOINOPDETAIL where opervirtualCoin > 0 and status = 1 and operTime >=DATE_SUB(date_sub(CURDATE(),INTERVAL EXTRACT( day from CURDATE())-1 day),INTERVAL 1 MONTH) [ 上个月第一天 ] and operTime