oracle数据库和mysql兼容,oracle和mysql双数据库兼容总结

本文总结了Oracle和MySQL数据库之间的兼容性问题,包括SQL语法差异、数据类型转换、CaseWhen语句的使用、 DISTINCT操作在CLOB字段上的限制以及SpringBoot MyBatis Plus中的jdbcTypeForNull配置。提供了相应的解决策略,如使用CAST或TO_CHAR函数、避免在Mapper中使用分号、调整SQL语句以适应不同数据库,并介绍了如何在项目中处理Oracle和MySQL的差异。
摘要由CSDN通过智能技术生成

sql最好不要用函数

oracle的表别名不能用as,mysql都可以

oracle只能用单引号,mysql都可以

oracle在mapper中不能写分号

oracle的concat只能连接两个字符,mysql可以连接三个

//通用写法

LOGIN_NO like CONCAT('%',CONCAT(#{loginNo},'%'))

oracle数字和字符串不能直接比较,需要转换,mysql可以直接比较

//oracle to_char

LEFT JOIN ps_objectinfo_dict b

ON to_char( a.app_id ) = b.obj_val

//oracle和mysql都可以用 CAST

LEFT JOIN ps_objectinfo_dict b

ON CAST( a.app_id AS NVARCHAR2 ( 20 ) ) = b.obj_val

oracle的casewhen语句对字符集严格匹配,mysql随便

正常是下面这样的,在mysql可以,但oracle不可以,因为STATE的类型和单引号中的数据类型不一致,会报错:ORA-12704:字符集不匹配。

CASE STATE

WHEN 'T' THEN

'待处理'

WHEN 'H' THEN

'已处理'

END

可以使用to_char 或者cast 进行转换,但为了更好的数据库兼容性,选择以下方法:

C

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值