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