首页 > 解决方案 > Oracle 到 mysql 的转换

问题描述

我如何从 oracle 转换为 sql?

将 (+) 放在左侧或 (+) 右侧有什么区别?

可以帮我转换它,尝试在线工具对我不起作用。

SELECT sc.serial_no, sc.status, ca2.cust_ref_no, ca2.name, ca2.msis, ca2.state_name, to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime, ca2.serial_no term_ssno 
from so sc,  
( select ca.so_id, c.cust_ref_no, c.name, ca.msis, s.state_name, ca.te_datetime, t.serial_no 
from customer c, customer_account ca, state s, terminal t 
where c.install_state_id= s.state_id and c.cust_id = ca.cust_id and ca.term_id = t.term_id(+)) ca2 
where sc.so_id=ca2.so_id (+)and sc.status='Term' 

标签: mysqloracle

解决方案


使用 (+) 是 sql-92 标准,强烈建议使用 ANSI 标准。

(+) 表示联接 LEFT 或 RIGHT 联接的性质。

对于您的查询,它将如下所示:

SELECT sc.serial_no, sc.status, 
       ca2.cust_ref_no, ca2.name, 
       ca2.msis, ca2.state_name, 
       to_char(ca2.term_datetime,'DD/MM/YYYY HH:MI AM') te_datetime, 
       ca2.serial_no term_ssno 
from so sc LEFT JOIN  
( select ca.so_id, c.cust_ref_no, 
         c.name, ca.msis, 
         s.state_name, ca.te_datetime, t.serial_no 
from customer c 
JOIN customer_account ca ON c.cust_id = ca.cust_id
JOIN state s ON c.install_state_id= s.state_id
LEFT JOIN terminal t ON ca.term_id = t.term_id) ca2 
ON sc.so_id=ca2.so_id
WHERE sc.status='Term'

推荐阅读