1、时间处理函数

trunc(sysdate) 返回日期sql

to_date()oracle

to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')app

to_number() 转为数字函数

2、字符串处理函数oop

substr(bag.serialid, 0, 13) 截取字符串spa

regexp_substr(i_sBloodSubType, '[^,]+', 1, level) 正则.net

regexp_replace(i_sBloodSubType, '[^,]+', '')翻译

regexp_like()code

instr(b.fullname, '新鲜') 返回要截取的字符串在源字符串中的位置 参数:(源字符串, 目标字符串, 起始位置, 匹配序号)regexp

length()

3、判断

=

!=

>

<

and

or

not

IS NULL

in ('血浆类', '低温沉淀物类')

exists()

coalesce(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,若是都为空则返回空值。

nvl(表达式1,表达式2) 为空则取表达式2的值

decode() DECODE(value,if1,then1,if2,then2,if3,then3,...,else)

case when...then.... end 表达式

CASE语句寻找when的优先级是从上到下。再多的when,也只有一个出口,即其中有一个知足了expr就立刻退出case,这点须要牢记

4、整合

cursor() 返回{字段名=值,.....} 整个结果集做为某一个字段 仅Oracle可用

5、去重

distinct

6、汇集查询

count()

sum()

max()

min()

avg()

查询汇集函数获得的结果和其余字段,该字段必定要被group by,不然会报错

wm_concat(column)  将字段合并

row_number() over(partition by 列 order by 列 desc) 为何要用它?其实每次查询都会有一个伪列rownum,只是伪列的顺序是乱的,解决伪列顺序的问题还得使用子查询。因此这里直接用row_number()

实例:

对group_id进行普通的group by操做---按照小组进行分组

SQL> select group_id,sum(salary) from group_test group by group_id;

GROUP_ID SUM(SALARY)

---------- -----------

30 12000

20 8000

40 16000

10 4000

对group_id进行普通的roolup操做---按照小组进行分组,同时求总计

SQL> select group_id,sum(salary) from group_test group by rollup(group_id);

GROUP_ID SUM(SALARY)

---------- -----------

10 4000

20 8000

30 12000

40 16000

40000

以上rollup语句能够翻译成group by union all 语句,为:

select group_id,sum(salary) from group_test group by group_id

union all

select null, sum(salary) from group_test

order by 1;

GROUP_ID SUM(SALARY)

---------- -----------

10 4000

20 8000

30 12000

40 16000

40000

若是显示“1”表示GROUPING函数对应的列(例如JOB字段)是因为ROLLUP函数所产生的空值对应的信息,即对此列进行汇总计算后的结果。

若是显示“0”表示此行对应的这列参未与ROLLUP函数分组汇总活动。

having子句 通常是同group by一块儿使用的,用来筛选聚合后的结果

7、结果联合

union 可能有重复值,且须要去重的时候使用,不然会浪费去重的查询资源

union all 不须要去重的时候使用

with as 把一大堆重复用到的sql语句放在with as里面,取一个别名,后面的查询就能够用它

8、左右链接另外一种写法

h.operator=op.id(+) 右链接

h.operator(+)=op.id 左链接

9、将结果集转为xml形式返回

dbms_xmlgen 用户处理xml格式 sys_refcursor 用来接收结果集 sysdate 系统时间

oracle 10g中,有两个包,用于处理xml格式: dbms_xmlgen 和 dbms_xmlstore.

2.使用dbms_xmlgen生成数据表的xml格式

declare

xmlhdl dbms_xmlgen.ctxtype;

line varchar2(200);

xmltext varchar2(32767);

begin

-- create ctxhandle

xmlhdl := dbms_xmlgen.newcontext('select * fromxmldemo');

--generate xml format data into clob

xmltext :=dbms_xmlgen.getxml(xmlhdl);

--display the xml content

loop

exit when xmltext is null;

line :=substr(xmltext,1,instr(xmltext,chr(10))-1);

dbms_output.put_line(line);

xmltext :=substr(xmltext,instr(xmltext,chr(10))+1);

end loop;

--close ctxhandle

dbms_xmlgen.closecontext(xmlhdl);

end;

3.dbms_xmlgen其它函数

getnumrowsprocessed(xmlhandle):=getxml所处理的实际行数

dbms_xmlgen.setMaxRows(xmlhdl,10):=容许处理最大行数

dbms_xmlgen.setrowsettag(xmlhdl,'Packet'):=重置行集标签rowset

dbms_xmlgen.setrowtag(xmlhdl,'Record'):=重置行标签row

dbms_xmlgen.setnullhandling(xmlhdl,2):=列空值如何表示,如:

实例:

function queryBloodIn(i_sHandoverId in varchar2) return clob as

res clob;

-- 和 dbms_xmlgen.ctxtype 结果同样

ctx dbms_xmlgen.ctxHandle;

-- declare result set 申明结果集

refcur sys_refcursor;

begin

-- 将查询结果保存到结果集

OPEN refCur FOR

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as time,

substr(bag.serialid, 0, 13) as serialid,

b.shortname as bloodname,

bst.name as bloodsubtype

from pm_handover h,pm_handoverdetail hd,bloodbag bag,d_blood b,d_bloodsubtype bst

where h.id=i_sHandoverId

and h.type in (2, 102, 152)

and hd.handoverid=h.id

and (h.accepttime > trunc(sysdate) or exists(select null from pm_store s where s.bloodbagid = hd.bloodbagid and s.status in ('Processing', 'Producing')))

and hd.bloodbagid=bag.id

and bag.bloodid=b.id

and b.subtype=bst.id;

-- get Handle 获得处理对象

ctx:=dbms_xmlgen.newContext(refCur);

-- 空值处理

dbms_xmlgen.setNullHandling(ctx,dbms_xmlgen.EMPTY_TAG);

-- 设置列名做为标签名

dbms_xmlgen.useItemTagsForColl(ctx);

-- 获得xml结果

res:=dbms_xmlgen.getXML(ctx);

-- 关闭上下文

dbms_xmlgen.closeContext(ctx);

RETURN res;

end;

oracle sum里面去重,Oracle中碰到的函数和关键字收集相关推荐

  1. oracle sum详解,oracle sum()聚合函数

    原文链接:https://blog.csdn.net/cizatu5130/article/details/100291347 oracle sum()聚合函数 2016-05-13 20:08:00 ...

  2. python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是

    Python 语言中用来定义函数的关键字是 答:def 调查问卷采集是数据采集人员通过设计具有针对性的问卷,采用方式进行信息采集 答:以上都是 中国大学MOOC: 突出重点,必须以解决问题为目标.也就 ...

  3. python中定义匿名函数的关键字是,Python中的匿名函数

    写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿名函数这块儿,其实可以用常见的循环等方法来实现,但是如果你想成为一个pyth ...

  4. oracle对substr去重,oracle使用笔记

    1.scott解锁 alter user scott identified by tiger; alter user scott account unlock; 2.导表 @d:/oracle/tab ...

  5. oracle plsql 字符串长度,plsql中常用字符串函数

    1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space f ...

  6. oracle 多条件去重,Oracle数据去重

    Oracle数据去重保留一条 多个条件分组 delete from M_BASEPRICE_0719_CC m where (m.brand_code,m.supplier_code,m.part_c ...

  7. oracle isnull的用法,SQL中的ISNULL函数使用介绍

    使用指定的替换值替换 NULL. 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL ...

  8. oracle 自动表分析,其实 Oracle 直方图自动统计算法存在这些缺陷!

    原标题:其实 Oracle 直方图自动统计算法存在这些缺陷! 科技细分领域TOP10影响力内容第一季度入选作品 来源 | CSDN 作者 | 吴海存 在某些场景下,表中某一列的数据分布会比较崎岖,使得 ...

  9. oracle sum函数返回空,关于SQL语句中SUM函数返回NULL的解决办法

    SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如 ...

  10. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

最新文章

  1. ashx页面中context.Session[xxx]获取不到值的解决办法
  2. mysql5.7 不复制多张表
  3. java web 总结,Java Web 相关概念经典总结(一)
  4. 【活动】厦门.NET俱乐部 省上云开发者专场
  5. React的Ant Design Pro目录结构
  6. 利用html sessionStorge 来保存局部页面在刷新后回显,保留
  7. 提高你的迅雷速度,绝对值得一看
  8. css3之 谜灯卡片_纯css3灯泡开关特效代码
  9. oracle归档日志满正常么,oracle归档日志满了的处理方法
  10. securecrt下载和注册方法
  11. 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
  12. rubyonrails test 小记
  13. python选股软件编写
  14. 程序员,从培训班出来的都是垃圾!!!?
  15. 用Javascript实现放大镜效果
  16. 生信学习入门常见错误可能的原因分类总结和求助指南
  17. C#隐藏任务管理器中进程 支持win10 win8.1 win7
  18. gtx1660是什么级别的_GTX1660显卡性能怎么样 gtx1660相当于什么显卡
  19. 【复盘】如何写一份教程?
  20. linux线程篇,linux线程篇 (二) 线程的基本操作

热门文章

  1. 广东中学计算机课可教什么,广东实验中学课程设置如何?有什么特色?
  2. linux 查看 java 进程内存占用情况
  3. 从键盘输入5个学生每科分数,把分数保存到一个数组中,最后输出分数大于60分的成绩
  4. 循环中需要调用异步怎么确保执行完再执行其他的_JavaScript的工作原理:事件循环及异步编程...
  5. 信息网络传播中的服务器标准,信息网络传播权的服务器标准与实质替代标准之争...
  6. c语言中rm无法删除文件夹,rm:无法删除'-rf':没有这样的文件或目录
  7. 5二代配什么主板最好_新教育5:父母什么时间陪伴孩子最好
  8. 【译】2018 年前端开发回顾
  9. 创建jenkins任务
  10. C#中的简单工厂设计模式示例