oracle視圖遷移到mysql


oracle視圖遷移mysql(僅記錄當前項目遇到的小問題和解決方案)
涉及問題點:
1、函數差異
        oracle                    mysql
判斷空值:    nvl('字段',值)             ifnull('字段',值)
條件賦值:    decode()                case when then else end
日期格式化:   to_char('date','yyyy-MM-dd')           date_format('date','%Y%m%d')
...
2、規則限定
主要是mysql創建視圖遇到的規則限制,
2.1、mysql創建視圖不允許SQL中有子查詢,oracle不存在此限制。
2.2、mysql分組排序實現和oracle差異
oracle分組排序,獲取排序id:row_number() over(partition by a.policy_id order by a.transfer_date desc)
mysql方案:使用函數
CREATE FUNCTION `func_inc_var_session`(reset BIT) RETURNS int
   
NO SQL
   
NOT DETERMINISTIC
    
begin
     
IF reset THEN
       
SET @var := 0;
     
ELSE
       
SET @var := IFNULL(@var,0) + 1;
     
END IF;
     
return @var;
    
end
視圖:SELECT func_inc_var_session(0) FROM (select語句集合結果)T JOIN (SELECT func_inc_var_session(1)) r
【轉自--https://blog.csdn.net/ai_feng123/article/details/82256814】
2.2.1倘若不使用視圖排序,可使用變量(變量需要使用實體表,mysql變量不支持虛擬表)
SELECT @rownum := @rownum+1 AS rownum, table1.* FROM (SELECT @rownum:=0) r ,table1;
--附mysql創建視圖的限制--http://blog.51yip.com/mysql/1065.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM