oracle只舍不入,Oracle常用函数 - 不以物喜-不以己悲的个人空间 - OSCHINA - 中文开源技术交流社区...

本文主要是介绍oracle只舍不入,Oracle常用函数 - 不以物喜-不以己悲的个人空间 - OSCHINA - 中文开源技术交流社区...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、decode

decode(value,if1,then1,if2,then2,if3,then3,...,[default]);

如果不匹配,返回default值;如果未定义default值,则返回空值。

使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表

举例:

现有一个商品销售表sale,表结构为:

month    char(6)      --月份

sell    number(10,2)   --月销售金额

现有数据为:

200001  1000

200002  1100

200003  1200

200004  1300

200005  1400

200006  1500

200007  1600

200101  1100

200202  1200

200301  1300

想要转化为以下结构的数据:

year   char(4)      --年份

month1  number(10,2)   --1月销售金额

month2  number(10,2)   --2月销售金额

month3  number(10,2)   --3月销售金额

month4  number(10,2)   --4月销售金额

month5  number(10,2)   --5月销售金额

month6  number(10,2)   --6月销售金额

month7  number(10,2)   --7月销售金额

month8  number(10,2)   --8月销售金额

month9  number(10,2)   --9月销售金额

month10  number(10,2)   --10月销售金额

month11  number(10,2)   --11月销售金额

month12  number(10,2)   --12月销售金额

578d1bf137ad1e472f3a8eeccc02fd16.png

create or replace view

v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)

as

select

substrb(month,1,4),

decode(substrb(month,5,2),'01',sell,0),

decode(substrb(month,5,2),'02',sell,0),

decode(substrb(month,5,2),'03',sell,0),

decode(substrb(month,5,2),'04',sell,0),

decode(substrb(month,5,2),'05',sell,0),

decode(substrb(month,5,2),'06',sell,0),

decode(substrb(month,5,2),'07',sell,0),

decode(substrb(month,5,2),'08',sell,0),

decode(substrb(month,5,2),'09',sell,0),

decode(substrb(month,5,2),'10',sell,0),

decode(substrb(month,5,2),'11',sell,0),

decode(substrb(month,5,2),'12',sell,0)

from A_Test;

结果:显然不符合要求

92dd05b680f01f69071999e0002322b0.png

方法二:

create or replace view

v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)

as

select

substrb(month,1,4),

sum(decode(substrb(month,5,2),'01',sell,0)),

sum(decode(substrb(month,5,2),'02',sell,0)),

sum(decode(substrb(month,5,2),'03',sell,0)),

sum(decode(substrb(month,5,2),'04',sell,0)),

sum(decode(substrb(month,5,2),'05',sell,0)),

sum(decode(substrb(month,5,2),'06',sell,0)),

sum(decode(substrb(month,5,2),'07',sell,0)),

sum(decode(substrb(month,5,2),'08',sell,0)),

sum(decode(substrb(month,5,2),'09',sell,0)),

sum(decode(substrb(month,5,2),'10',sell,0)),

sum(decode(substrb(month,5,2),'11',sell,0)),

sum(decode(substrb(month,5,2),'12',sell,0))

from A_Test

group by substrb(month,1,4);

结果:bingo

8627ab97dc63ddd433f6c6f72bd0a52c.png

举例2:

id

score

1

100

2

95

3

85

4

84

5

70

6

60

id

standard

1

优秀

2

优秀

3

优秀

4

良好

5

良好

6

及格

select id, decode(sign(score-85),1,'优秀',0,'优秀',-1,

decode(sign(score-70),1,'良好',0,'良好',-1,

decode(sign(score-60),1,'及格',0,'及格',-1,'不及格'))) standard

from A_Test;

select id,

case

when score>=85 then '优秀'

when score>=70 then '良好'

when score>=60 then '合格'

when score<60 then '不及格'

end standard

from A_Test;

2、sign

sign(value),某个值是0、正数还是负数,分别返回0、1、-1

3、字符函数

1)截取

substr(str, start, length),按字算

substrb,按字节算,一个中文2个字节,当所取长度为奇数时,则自动舍弃最后一位字节

substrc:按Unicode编码

substr2:按UCS2编码

substr4:按UCS4编码

同理,字符串查找 instr(str, findStr[, start][, 第几个匹配]) 与 instrb。

length(str)和lengthb

2)ASCII(X)  --返回字符X的ASCII码

chr(x) --CHR和ASCII是一对反函数

CONCAT(X,Y) --连接字符串X和Y

LOWER(X) --X转换成小写

UPPER(X) --X转换成大写

LTRIM(X[,TRIM_STR]) --把X的左边截去trim_str字符串,缺省截去空格

RTRIM(X[,TRIM_STR])

TRIM([TRIM_STR  FROM]X)

REPLACE(X,old,new)

TRANSLATE(string,from_str,to_str)

--TRANSLATE是REPLACE所提供的功能的一个超集.如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string中被删除,因为它们没有相应的替换字符. to_str不能为空.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL.

RPAD(string1,x[,string2])

--返回在X 字符长度的位置上插入一个string2中的字符的string1。如果string2的长度要比X字符少,就按照需要进行复制。如果string2多于 X字符,则仅string1前面的X各字符被使用。如果没有指定string2,那么使用空格进行填充。X是使用显示长度可以比字符串的实际长度要长。 RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。

INITCAP(String) --返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string

NLS_INITCAP

NLS_LOWER

NLS_UPPER

NLSSORT(string[,nlsparams])

--得到用于排序string的字符串字节.所有的数值都被转换为字节字符串,这样在不同数据库之间就保持了一致性. Nlsparams的作用和NLS_INITCAP中的相同.如果忽略参数,会话使用缺省排序.

4、数字

ABS(X)

CEIL(X)

FLOOR(X)

ROUND(X[,Y]) --X在第Y位四舍五入

TRUNC(X[,Y]) --X在第Y位截断

MOD(X,Y) --取余

POWER(X,Y) --X的Y次幂

LOG(X,Y) --X为底Y的对数

SQRT(X) --X的平方根

5、NVL(X,VALUE)

如果X为空,返回value,否则返回X

NVL2(x,value1,value2)

如果x非空,返回value1,否则返回value2

6、聚合函数

sum、avg、count、min、max

这篇关于oracle只舍不入,Oracle常用函数 - 不以物喜-不以己悲的个人空间 - OSCHINA - 中文开源技术交流社区...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292951

相关文章

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日