小编给大家分享一下mysql与oracle数据的语法有什么不同之处,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!
mysql与oracle语法区别:
1、在MySQL中from 后的表如果是(select.......)这种,那么后面必须有别名
2、连接字符串在Oracle中用|| ,MySQL中用concat('a','b','c')
3、mysql没有像orcale的动态游标,只有显示游标
DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`liyukun`$$ CREATE DEFINER=`ids`@`localhost` PROCEDURE `liyukun`(out z int) BEGIN declare count1 int; DECLARE done INT DEFAULT 0; declare v_haoma varchar(50); declare v_yingyeting varchar(100); DECLARE cur1 CURSOR FOR select haoma,yingyeting from eryue where id<2; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; //这里和oracle有区别,Oracle的PL/SQL的指针有个隐性变 量%notfound,Mysql是通过一个Error handler的声明来进行判断的 OPEN cur1; cur1: LOOP FETCH cur1 INTO v_haoma,v_yingyeting; IF done=1 THEN //如果没有数据了,则离开 LEAVE cur1; ELSE select count(*) into count1 from year2012 where haoma=v_haoma ; if(count1=0) then insert into year2012(haoma, yingyeting) values(v_haoma,v_yingyeting); else set z = z+1; update year2012 set eryue = ‘100’ where haoma=v_haoma; end if; END IF; END LOOP cur1; CLOSE cur1; END$$ DELIMITER ;
4、orcale用decode()来转换数据,mysql用case when:
SELECT sql 中 case when Title, sql 中 case when 'Price Range'= sql 中 case when CASE sql 中 case when WHEN price ISNULLTHEN'Unpriced' sql 中 case when WHEN price <10THEN'Bargain' sql 中 case when WHEN price BETWEEN10and20THEN'Average' sql 中 case when ELSE'Gift to impress relatives' sql 中 case when END(必须有end)
5、Orcale中没有TOP,是通过
select * from (select * from A order by id desc) where rownum=1
注:不能直接写 select * from A where rownum=1 order by id desc 因为语句执行的顺序是先where再order by ,如果这样写就无法按id的排序来取第一个了。
不能写rownum=2或rownum>1这样,因为Orcale 默认必须包含第一条。
如果非要取第二条的话,可以写成:
select * from (select id,rownum as row_num from lws_q_bl_result r where r.sample_id = 'B10226072') where row_num=2
mysql:
limit是mysql的语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
6、Orcale,MySql while循环比较
Orcale:
while num<10 loop str := to_char(num); num := num+1; end loop;
mysql:
while num<10 do str := to_char(num); num := num+1; end while;
7、orcale 生成唯一序列是 select sys.guid() from dual ,mysql是 select uuid() from dual
看完了这篇文章,相信你对mysql与oracle数据的语法有什么不同之处有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。