十条Oracle不常用但很实用的SQL语句总结
在Oracle中经常会遇到一些不常用到,但是却很实用的小语句。偏偏这些语句你在网上还一时半会儿的查不到。所以我把我知道或者遇到的都总结一下。不断更新中,常用Oracle的朋友可以收藏一下。
1选择前5行的内容.
select*fromdq_S2_S2whererownum<=5 选择其中几行的内容 select date_time from ( select date_time,row_number() over ( order by date_time ) rn from dq_S2_S2) where rn between 3 and 4;
2.Date型与String型的转化
selectto_date(substr(start_time,1,10),'yyyy-mm-dd')fromtable 或者 selectto_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')fromdual
3.对时间的加减算法
sysdate - interval '7' year 当前时间减去7年 sysdate - interval '7' hour当前时间减去7小时 例如:select trunc(sysdate,'hh24')- interval '1' hour from dual
4.update接select语句
update接select语句最难的在于加where条件,如果是update的正好是select出来的全部,那么简单极了,但是当有多条select语句,必须要查询出来有其他内容,然后在用其他内容做判断的话就很复杂了。下面单独给出一个例子,感觉妙就妙在where语句明明是select的字句 但是却必须在update中才能运行,否则会报错~各位有兴趣不妨体验一下。 update DQ_CQXXB2 x set(x.fwrdj,x.fsj2) 5.在没有merge into 的情况下实现有则更新,没则新建
UPDATE table SET field='C',field2='Z' WHERE id=3; 6.去空格 --去前空格select ltrim(' 1 1 ') aa from dual;--1 1 --去后空格select rtrim(-- 1 1 --去前后空格select trim(--1 1 --去前后中空格selectreplace(' aa kk ',' ',0)">'') abcdfrom dual;--aakk
7.去回车符、换行符、空格符大家首先要知道的是:制表符 chr(9)、换行符 chr(10)回车符 chr(13) --去除换行update zhzl_address t set t.add_administration_num=replace(t.add_administration_num,chr(10),0)">''); --去掉回车13),monospace; font-size:14px; line-height:20.3px; white-space:pre">--去掉空格set t.add_administration_num=trim(t.add_administration_num);
8.字符串截取splitselect column_value as employee fromtable(splitstr('BGI5819,BGI11625,BGI11150,BGI11273,BGI7987',',')) 结果为
9.order by having的用法其实having的用户和where的用法在select时是一样,都是加限制条件,但是区别是where是搜索前过滤,having是在order by分好组之后过滤。 这样考虑的话就要分为两种情况: 1.分组不影响所要过滤的列,或者说所要过滤的列不需要分组。这种情况当然having和where是一样的了,不过从效率上来说,推荐where,因为having毕竟是首先要进行总体的排序。 2.所要过滤的列首先需要分组才能获得。这种情况就只能用having了。10.Where 语句后面加上case when语句 话不多说 直接上实例 select * from 表 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |