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

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

你可能感兴趣的:(oracle数据库和mysql兼容,oracle和mysql双数据库兼容总结)