日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql语法与decode语法的不同

發(fā)布時間:2024/4/14 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql语法与decode语法的不同 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這兩天要把一個系統(tǒng)從oracle上移植到mysql上,順便簡單整理一下兩者語法的不同

?

  • decode

  • mysql中沒有decode,可以使用case when語句代替,oracle也支持case when語句,看來以后為了移植方便還是使用case when比較好。

    select NAME,case namewhen 'sam' then 'yong'when 'lee' then 'handsome'else 'good' end from lee;

    ?

    下面是同一條sql,decode與case when比較:

    ?

    ?

    sum(decode(sign(similarity-${param1})+sign(similarity-${param2}),0,1,-1,1,0)) as sus_tort_countsum(case sign(similarity-${param1})+sign(similarity-${param2}) when 0 then 1 when -1 then 1 else 0 End

    ?

    2.分頁代碼:

    oracle中分頁代碼使用rownum,具體參見:http://qingfeng825.iteye.com/blog/779462

    ----oracle排序?qū)懛? SELECT * FROM ( SELECT list.*, rownum as RNUM FROM ( SELECT * FROM CIP_Test_User ORDER BY ID desc ) list WHERE ROWNUM < 11 ) WHERE RNUM >=1

    ?

    1和11都代表行號

    mysql分頁使用limit

    ----mysql排序?qū)懛? SELECT * FROM CIP_Test_User ORDER BY ID desc limit 1,10

    ?

    1代表偏移量,10代表要取出來的記錄個數(shù)

    3.數(shù)字轉(zhuǎn)字符串

    ???? mysql:? concat(site_id,'')

    ???? oracle:to_char(site_id)

    ?

    4.取當(dāng)前日期(mysql 要加括號)

    ??? mysql:now(),sysdate() 具體參見:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html

    ??? oracle:sysdate

    5.觸發(fā)器的不同,下面是兩個相同功能的觸發(fā)器

    CREATE TRIGGER `IMS_EVIDENCE_UPDATE_TRIGGER` BEFORE UPDATE ON `bas_page_evidence`FOR EACH ROW BEGIN if ((NEW.WEB_IMAGE IS NOT NULL AND OLD.WEB_IMAGE IS NULL) OR(NEW.WEB_URL_IMAGE IS NOT NULL AND OLD.WEB_URL_IMAGE IS NULL) OR(NEW.HTML_SNAP IS NOT NULL AND OLD.HTML_SNAP IS NULL)) thenset new.Evidence_Done_Count=new.Evidence_Done_Count+1;if(new.EVIDENCE_DONE_COUNT>=new.EVIDENCE_COUNT) thenset new.Evidence_date=sysdate();if(new.EVIDENCE_STATUS!='4' and old.EVIDENCE_STATUS!='4') thenset new.Evidence_status = '3';end if;update bas_monitor_result set status='5' where status='4' and url_Id=new.url_id;end if; end if; END;

    ?(mysql版本)

    ?

    CREATE OR REPLACE TRIGGER IMS_EVIDENCE_UPDATE_TRIGGER before UPDATE OF Web_image,Web_url_image,Html_snap ON ims_page_evidence REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW WHEN ((new.Web_image is not null and old.Web_image is null) or(new.Web_url_image is not null and old.Web_url_image is null) or(new.Html_snap is not null and old.Html_snap is null)) BEGIN:new.Evidence_Done_Count := :old.Evidence_Done_Count+1;if :old.Evidence_Done_Count+1 >= :old.Evidence_Count then:new.Evidence_date := sysdate;if :old.Evidence_status !='4' and :new.Evidence_status !='4' then:new.Evidence_status := '3';end if;--更新resultupdate ims_monitor_result set status='5' where status='4' and url_Id=:new.url_id;end if; END;

    (oracle版本)?

    ?

    ?幾點不同: mysql沒有replace trigger, 要修改一個trigger只能是drop trigger后重新建;

    ???????????????? oracle在before update? 與 on? 表名之間可以加入 of 列名1,列名2,列表3,表示當(dāng)前trigger只對這幾列有用,在mysql中沒有找到這種寫法。

    ???????????????? oracle中用到new old都要加: ,mysql不用。

    總結(jié)

    以上是生活随笔為你收集整理的mysql语法与decode语法的不同的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。