20个案例掌握PLSQL基础.docVIP

  • 11
  • 0
  • 约1.96万字
  • 约 17页
  • 2017-06-12 发布于北京
  • 举报
20个案例掌握PL/SQL 基础 ??????? 有MS SQL基础,学习了两周多的PL/SQL,做了一些事例,但是很多信息在网上难以找到太多正确的答案,看到一篇又一篇的PL/SQL博文,案例方面的博文一篇又一篇的雷同,一看就是是Ctrl+C的复制.给一些博主留言希望得到解答,但是等到却是我也是复制来的,具体的没测试. ??????? 狠心之下,花了不少时间学习.做了一些例子,搞定之余,留下点供参考的例子. ??????? 阅读本篇博文之前,建议你学习一下基础,这是推荐的两个PL/SQL博客, EricHu 胡勇:Oracle编程详解  ????? =传送门 liulun:  ??PL/SQL学习笔记(索引帖)=传送门? ? 测试:SQL Navigator 3+Oracle;远程连接 用以下案例来总结 PL/SQL相关知识: 1.将2010-12-06转换成Dec-06-2010的格式. 错解: 1 select to_char(to_date(2010-12-06,yyyy-mm-dd),mon-dd-yyyy) from dual PS:如果安装的系统默认语言为EN,那么这种执行结果正确,但是若是CN那就错了.所以,需要设置一下显示的语言才能保证Dec的出现. 正解: 1 select to_char(to_date(2010-12-06,yyyy-mm-dd),mon-dd-yyyy,NLS_DATE_LANGUAGE=American) from dual 2.PL/SQL中常用round函数,trunc函数,instr函数,substr函数的区别. 正解: (1)round(x,y)以小数点右边第y位四舍五入x; (2)trunc(x,y)舍去小数点右边第y位以后的数字; (不要去看网上的所谓负数出现的解释,没什么用,以后出现的机会也不会存在) (3)instr(str1,str2,num) ???????? Str1:原字符串,str2要查找的字符串,num第几次出现 ???????? 返回要查找的str2在原字符串str1中第num次出现的位置,若不存在,则返回0; (4)substr(str1,num1,num2)截取字符串str中 从num1位开始之后的num2个,num1为负数时反向 3.外连接与内连接: 正解:oracle外连接中左.右.全连接的区别=?传送门 4.如何删除重复的记录. 错解: 1 select * from 表 where Id in (select Id from 表 group by Id having count(Id) 1) PS:仔细看了一下代码,自己居然粗心地把所有重复记录数据的都按 id 删除了,但是是不是该保留一行呢?! 正解: 1 delete from table 2 where id in 3 ( 4 select id from table 5 group by id 6 having count(id)1 7 and rowid not in 8 ( 9 select min(rowid) from table 10 --记住oracle中独有的标识列字段rowid, 11 --查询所有重复id但是不包括最小(min)的id,删除之;最大的效果同理. 12 --但是是不是还有个问题,id必须是递增而且是设为主键的,要不然,这道例子...... 13 ) 14 ) 5.返回今天星期几(5.1返回 星期五;5,2返回Friday) 正解: 5.1 1 select to_char(sysdate,day,nls_date_language=simplified chinese) from dual 5.2 1 select to_char(sysdate,day,nls_date_language=American) from dual PS:这个和和第一题类似.注意5.1的simplified chinese后面的3个单引号,因为是字符串.所以在 simplified chinese要加上单引号simplified chinese,但是因为两个单词中间有空格,再加上一层 simplified chinese,再有一个单引号就是转义符,变成了 simplified chinese.反正有点混乱,看我在论坛问的这个解答: ??????/topics/390439756 6.返回当前月的最后一天. ?正解: 1 select last_day(add_months(sysdate,0)) from dual PS:如果把sysydate加

文档评论(0)

1亿VIP精品文档

相关文档