Oracle常用函数集锦

1、wmsys.wm_concat函数

将列转为行。例子:

--表里的数据如下
SQL> select * from idtable;
        ID NAME
---------- ------------------------------
        10 ab
        10 bc
        10 cd
        20 hi
        20 ij
        20 mn
--函数的执行效果
SQL>select id,wmsys.wm_concat(name) name from idtable group by id;
        ID NAME
---------- --------------------------------------------------------------------------------
        10 ab,bc,cd
        20 hi,ij,mn

即按id分组,把id相同的name列组合起来,并用英文逗号分隔。

2、replace函数

replace(String str, String targetStr [, String aimStr]),将str字符串中的targetStr字符,替换为aimStr字符。

如果不给出aimStr参数,则函数就会将str字符串中的targetStr字符串删除。如:

select replace('hello', 'h', 'y') from dual;
--输出:yello
select replace('hello', 'h') from dual;
--输出:ello

3、“||”字符串连接符

在Oracle中,如果想要将字符串连接起来,那么可以使用“||”符号。如:

select dummy from dual;
--输出:X
select dummy || 'Z' from dual;
--输出:XZ

4、decode函数

decode通常用来做判断,其参数格式为:decode(条件,值1,翻译值1,值2,翻译值2,缺省值),它等于我们编程中这样的语句:

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

下面举几个例子:

select decode('1', '1', 'one', '2', 'two', 'other') from dual;
--1.输出:one
select decode('2', '1', 'one', '2', 'two', 'other') from dual;
--2.输出:two
select decode('1', '1', 'one', '1', 'two', 'other') from dual;
--3.输出:one (遇到第一个值匹配之后,就不再进行匹配了,验证了是IF..ELSE IF..ELSE的语法)

5、sign(n)函数

若n=0,则返回0。否则,n>0,则返回1。n<0,则返回-1。

select sign(12) from dual; 
--输出:1

6、ceil(n) 

返回结果是大于等于输入参数的最小整数

select ceil(10.5) from dual;
--输出:11

7、floor(n)

返回结果是小于等于输入参数的最大整数

select floor(9.3) from dual;
--输出:9

8、round(n)

四舍五入

SELECT round(100.51515),round(99.2343) from dual;
--输出:101 99

9、TRUNC(n, integer)

截取数值的函数。integer为正整数,表示截取几位小数。integer为负整数,则截取小数点左几位。如果integer为小数,则函数会忽略小数部分。

比如当integer为3.25时,函数将会按3去截取。

select trunc(1222.23456,2), trunc(1222.23456, -1), trunc(1222.23456, 2.56) from dual;
--1222.23   1220   1222.23

10、TRUNC(sysdate, varchar)

对日期进行截取, varchar字符表示精确到的位数(大小写不影响结果,如:mm与MM结果一样)

--现在时间是:2014年10月29日 18:35:09
--精确到年。  输出结果:2014/1/1
select trunc(sysdate ,'yyyy') from dual ;  
--精确到月    输出结果:2014/10/1
select trunc(sysdate ,'mm') from dual ;  
--精确到日    输出结果:2014/10/29
select trunc(sysdate ,'dd') from dual ;  
--精确到小时  输出结果:2014/10/29 18:00:00
select trunc(sysdate ,'hh') from dual ;   
--精确到分钟  输出结果:2014/10/29 18:38:00
select trunc(sysdate ,'mi') from dual ; 

精确到秒的暂时不知道。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫实战

算法:括号匹配问题

还记得有一次笔试题,有一道括号匹配的算法题,当时没有学习数据结构和算法,思路很模糊,后来了解一些数据结构之后就有思路了,今天将解法写出来。

19710
来自专栏Hongten

java中的移位运算符:<<,>>,>>>总结

value >>> num     --   num 指定要移位值value 移动的位数。

23450
来自专栏PHP在线

php总结

php5.3新增魔术方法__invoke在对象实例化之后,像调用变量函数一样调用。 class testClass{ function __invoke(...

34290
来自专栏数据结构与算法

19:字符串移位包含问题

19:字符串移位包含问题 总时间限制: 1000ms 内存限制: 65536kB描述 对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到...

49580
来自专栏PHP在线

开发中遇到一个数据库字段问题

大牛不必浪费时间了,适合初学者。 今天遇到一个问题,数据库字段问题。 有一张表存储着用户消费记录,设计表时使用的是整形,后来增加需求,需要对业务做些改动,改过之...

34860
来自专栏dotnet & java

用泛型来实现编译时期的类型推断

第一章都是讲泛型的,距离上一篇Effective C#的随笔已经是很久以前的事情了。。。

8930
来自专栏Python攻城狮

Pandas分组与聚合1.分组 (groupby)一、GroupBy对象:DataFrameGroupBy,SeriesGroupBy二、GroupBy对象支持迭代操作三、GroupBy对象可以转换成

6.6K40
来自专栏深度学习之tensorflow实战篇

python 利用递归实现全排列

使用递归实现全排列。123实现全排列! 法1: ? 上面定义了两个列表,一个列表存的是需要全排列的数据,另一个列表是当做栈来用的,可以把这个递归...

75780
来自专栏Zephery

redis

redis的数据结构 数据结构类型 结构存储的值 结构的读写能力 STRING 可以是字符串、整数、或者浮点数 对整个字符串或者字符串的其中一部分...

74590
来自专栏软件开发 -- 分享 互助 成长

C++ string类的学习

string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多。 注意其删除,...

44890

扫码关注云+社区

领取腾讯云代金券