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

  

时间: 2024-07-28 19:07:13

Oracle函数集锦的相关文章

oracle 函数集锦

oracle的函數很多﹐特整理出來﹕ abs(m)  m的绝对值mod(m,n) m被n除后的余数power(m,n) m的n次方round(m[,n]) m四舍五入至小数点后n位的值(n缺省为0)trunc(m[,n]) m截断n位小数位的值(n缺省为0) 字符函数: initcap(st) 返回st将每个单词的首字母大写,所有其他字母小写lower(st) 返回st将每个单词的字母全部小写upper(st) 返回st将每个单词的字母全部大写concat(st1,st2)  返回st为st2接

【函数】Oracle函数系列(1)--字符函数

[函数]Oracle函数系列(1)--字符函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 常见字符函数(lower.upper.initcap.concat.substr.length.intr.lpad.rpad.trim.chr.ascii.replace.translate)的使用 ② 判断字符串中是否含有汉字 ③ substr和instr的联合使用 ④

PHP盛宴——常用函数集锦

最近写了蛮多PHP,也接触到挺多常用的函数,大多都记了笔记,发个博客出来,共同学习.其实感觉学习一门语言,语法逻辑是软素质,而对语言的熟悉程度只能随着使用时间的增长而慢慢增长,当对一门语言的函数.库.特性都深深了解了,才能勉强称得上是熟练或者精通吧. 1. trim(),从字符串两端删除空白字符和其他预定义字符,当然可以删除指定的字符. 类似的还有ltrim().rtrim(). 2. __CLASS__,该常量返回该类被定义时的名字. 3. strtotime(),将任何英文文本的日期时间描述

ORACLE函数之单行数字函数

 1.           ABS(X) 返回X的绝对值 SQL>SELECT ABS(-1) A,ABS(1) B,ABS(0) C FROM DUAL; A          B          C -------------------- ---------- 1          1          0 2.          ACOS(X) 返回X的反余弦值 SQL>SELECT ACOS(0) A,ACOS(0.5) B,ACOS(1) C FROM DUAL; A    

Oracle——函数

CREATE FUNCTION annual_income(spNAme VARCHAR2) RETURN NUMBER IS yearSal number(7,2);BEGIN  SELECT (sal+NVL(comm,0))*12 INTO yearSal FROM emp WHERE ename=spNAme;  RETURN yearSal;END;/ SQL> var income number;SQL> call annual_income('SMITH') into:incom

matlab函数集锦

matlab函数集锦 matlab函数集锦ISFINITE(X), ISINF(X), or ISNAN(X)pwd 当前目录eval 执行matlab函数CONV2(  ,'same')  卷积F = reshape(f,3,3);options = optimset('Jacobian','off');a0 = [0 0 0 0 0, 0];[af,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@(x) costR

Oracle函数+for循环

create or replace function FilterMinganci(str in varchar) return varchar2 is filterWorld varchar2(1000); keyCount int; begin filterWorld := str; keyCount := 0; select count(1) into keyCount from dic_keyword; for aa in (select keyword from dic_keyword

java调用oracle函数

今天写了个oracle函数,但但对java如何调用不是很明白. 今天写了个,并且成功运行了. Connection conn = null; CallableStatement cstmt = null; try { conn = this.getJdbcTemplate().getDataSource().getConnection(); cstmt = conn.prepareCall("{call AUTO_TENDER_NVL(?)}"); cstmt.registerOutP

oracle函数listagg的使用说明(分组后连接字段)

关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用listagg这个函数,但是好多网上都是系统的全面的介绍listagg这个函数的使用方法,看起来很费力气.在这里我简明扼要的说明一下 实现这个需求的语句是这样的: select name, listagg(ddate,' / ') within group (order by name) as dd