sql去O经验总结

根据sql去O改造中用到的一些oracle转mysql的语法和经验进行总结:

1、 to_char对日期格式化

oracle: to_char(d.expire_date,'yyyymmddhhmiss')

mysql: date_format(d.expire_date,'%Y%m%d%H%i%s')

2、 decode转case when

oracle: decode(t.BUSIHALL, 'web', '网厅', 'wap', '掌厅') 营业厅,

mysql: CASE t.BUSIHALL WHEN 'web' THEN '网厅' WHEN 'wap' THEN '掌厅' END 营业厅,

3、 nvl转ifnull

oracle: SUM(NVL(T.COUNT_NUMBER, 0)) AS 统计值

mysql: SUM(IFNULL(T.COUNT_NUMBER,0)) AS 统计值

4、 sysdate获取系统时间

oracle: sysdate

mysql: sysdate() 或者 now()

5、 to_date对日期格式化

oracle: to_date('2018-01-09','yyyy-MM-dd')

mysql: str_to_date('2018-01-09','%Y-%m-%d')

6、 ||拼接的转换

oracle: STREET_NAME||HOUSE_NUMBER

mysql: CONCAT(STREET_NAME,HOUSE_NUMBER)

7、 count统计

oracle: count(*)

mysql: count(1)

8、 trunc截取的转换

oracle: trunc(sysdate)

mysql: date_format(sysdate(),'%Y-%m-%d 00:00:00')

9、 对日期进行加减

oracle: sysdate-30

mysql: date_add(sysdate(),INTERVAL -30 DAY)

10、子查询定义:Oracle中可以不加别名,MySQL中一定要加别名

oracle: select * from ( )

mysql: select * from ( ) as t

11、to_char()对数字进行处理

oracle: to_char(t.tamount / 100, '9999990.00')  缴费金额元,

mysql: round(t.tamount / 100, 2) 缴费金额元,

12、往前推x分钟 sysdate-x/24/60

oracle: sysdate - x/24/60

mysql: DATE_ADD(sysdate(),INTERVAL - x MINUTE)

13、to_number()数字转换

oracle: to_number(t.count_sort)

mysql: cast(t.count_sort as unsigned int)

14、序列改造

 

MySQL没有Oracle中的Sequence对象,所以不能直接使用sequence对象获取nextVal。
①hibernate的配置文件中序列改造
before: <generator class="sequence" >
            <param name="sequence" >SEQ_TD_PTL_USER_AWD</param>
            </generator>
after:    <generator class="com.sitech.common.util.Sequence">
            <param name="sequence">SEQ_TD_PTL_BROAD_RECORD</param>
            </generator>

before: <generator class="native" />
after:    <generator class="com.sitech.common.util.Sequence"></generator>
②Java中的序列改造

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值