`

oracle 内建函数(一)

阅读更多

数字函数
--输入和输出都是数字
--abs(x) 取绝对值
select abs(-1) from dual;--1

--ceil(x)  返回大于等于n的最小整数
select ceil(1.4),ceil(-2.5) from dual;--2,-2

--floor(x) 返回小于等于n的最大整数
select floor(1.4),floor(-2.3) from dual;--1,-3

--mod(a,b) 返回a/b的余数,如果b=0,返回a
select mod(3,2),mod(3,0) from dual; --1,3

--round(a,[b]) 四舍五入,b是指定四舍五入的位数,
--省略b,到整数;b是整数,小数点后b位;b是负数,小数点前b位
select round(23.78),round(23.78,1),round(23.78,-1) from dual;--24,23.8,20

--trunc(a,[b]) 截取数字,b同样代表截取位置,定位同上
select trunc(23.78),trunc(23.78,1),trunc(23.78,-1) from dual;--24,23.7,20

--平方根
select sqrt(3),sqrt(9) from dual;--1.732,3

--power(a,b) a的b次方
select power(sqrt(3),2),power(2,3) from dual;--3,8

--sign(number):number>0,return 1;number<0,return -1;number=0,return 0.
select sign(-7),sign(0),sign(7) from dual;

--greatest(a,b,c,d...) 返回最大的
select greatest(3,7,5,12) from dual; --12
--字符串比较 自然排序比较
select greatest('about','age','again') from dual;--age
--如果参数数据类型不通,都转换为第一个参数类型进行比较
select greatest('3',7,5,12) from dual; --7

--least(a,b,c,d...) 返回最小的,规则同greatest, 如果有一个为null,则返回null
select least(2,12,6) from dual; --2
select least('2','12','6'),least(2,34,null) from dual;--'12',null




字符函数
--ascii(char) 返回char的ascii码值
select ascii('a'),ascii('D') from dual;--97,68

--chr(n) 将ascii值转换成字符
select chr(97),chr(65) from dual;--a,A

--concat(a,b) 连接字符串a和b,作用和'||'相同
select concat('aa','bb'),'aa'||'bb' from dual; --aabb,aabb

--initcap(char) 将字符串中每个单词首字母大写 
select initcap('hello oracle') from dual;--Hello Oracle

--length(char)||lengthc(char) 返回字符串的长度
select length('hello我') from dual;--6
--vsize(char) 返回字符串的bytes长度 =lengthb(char)
select vsize('hello') from dual;
--查看字符集
select * from v$nls_parameters;
--
select length('我'),lengthb('我'),vsize('我') from dual;--1,2,2
select length('hello'),vsize('hello') from dual;--5,5


--instr(char,char1) char1在char中的位置,可以指定起始位置,和第几次出现
select instr('hello','l') from dual;--3,默认从第一个字符开始,第一次匹配结束
select instr('hello','l',1,2) from dual;--4,从第一个支付开始,第二次出现位置 

--lower(char) 字符串转换成小写
select lower('TOM') from dual;--tom

--upper(char) 字符转换成大写
select upper('Tom') from dual;--TOM

--lpad(char1,n,char2) 在char1字符串的左端添加char2字符串,直到插入的字符串长度达到n
--char2默认值为空格,如果char1长度大于n,返回char1左端的n个字符
select lpad('a',5,'b') from dual;--bbbba
select lpad('abcdefg',5,'h') from dual;--abcde 5<原字符串的长度,直接截取原来字符串返回

--rpad(char1,n,char2) 右端填充,规则同上面左端填充
select rpad('a',5,'big') from dual; --abigb


--ltrim(char1,char2) 从char1左端开始检测,如果当前位置字符在char2中,那么去掉该字符,直到
--遇到一个字符不在char2为止,返回char1
select ltrim('    hello') from dual;--hello 默认去除空格
select ltrim('hello','echo') from dual;--llo

--rtrim(char1,char2) 右端去掉字符,规则同上面左端去掉字符
select rtrim('oracle','leo') from dual;--orac

--substr(char,from,length) 截取字符串,from截取位置,length截取长度,
select substr('oracle',0,2) from dual;--or
select substr('oracle',2,3) from dual;--rac
select substr('oracle',2) from dual; --racle
select substr('oracle',-2,3) from dual; --le,从右面第2位数,截取3位

--trim(char1 from char2) 从char2的两边去掉char1
select trim('a' from 'abaa') from dual;--b

--translate
/*
    translate(str,str_to_relpace,replace_str)
    
    str:被操作对象
    str_to_replace:在str中寻找需要被替换的字符
    replace_str:对应str_to_replace串中被替换成的字符
    例:translate(str,'abcd','123')
        将str中所有'a'替换成'1','b'替换成'2','c'替换成'3','d'没有对应的替换字符,直接舍去.
        translate方法替换和被替换字符是一一对应的。
*/
select translate('oracleoracle','ole','123') from dual;--1rac231rac23
select translate('oracleoracle','ole','12') from dual;--1rac21rac2

--replace 
/*
    replace(str,substr1,substr2)
    将str中的所有substr1子串用substr2替换
*/
--自己体会和translate的区别
--单一字符和translate的效果相同
select replace('1111abc','1','A') from dual;--AAAAabc
select replace('1111abc','1') from dual;--abc
--多个字符就不同喽
select replace('1111abc','11','AB') from dual;--ABABabc
select translate('1111abc1','11','AB') from dual;--AAAAabcA

--translate是针对一个字符一个字符的替换,replace是字符子串的替换





日期时间函数
--to_date(str,format)将字符串转换成日期
/*
    format参数:
    YYYY 4位数字年份
    YYY,YY,Y年份的最后3|2|1为数
    MM 月份(01-12)
    DD day of month(1-31)
    HH=HH12 :hour of day(1-12)
    HH24 :hour of day(0-23)
    MI :minute(0-59)
    ss:second(0-59)
    
*/
select to_date('2011-10-01:22:35:24','YYYY-MM-DD:HH24:MI:SS') from dual;

--to_char(date,format)将日期转换成字符串
select to_char(sysdate,'MM-DD-YY') from dual;--08-22-11

--add_months(date,months)加整个月数
select sysdate,add_months(sysdate,3),add_months(sysdate,-2) from dual;

--last_day(date) 计算date所在时间月份的最后一天
select last_day(to_date('1988/08/08','yyyy/mm/dd')),last_day(sysdate) from dual;--1988-8-31,2011-8-31 22:49:23

--当前时间
select current_date,current_timestamp, sysdate from dual;
/* 2011-8-22 23:00:24 ,22-8月 -11 11.00.23.765000 下午 +08:00,2011-8-22 23:00:23*/

--时区 没大用吧
select dbtimezone from dual;

--从日期中提取信息
select extract(year from sysdate),extract(month from sysdate),extract(day from sysdate) from dual;

--返回相差的月数
select months_between(sysdate,to_date('2011-02-15','YYYY-MM-DD')) from dual;




其他
--nvl(exp1,exp2) 如果exp1=null,返回exp2,否则返回exp1
select nvl(null,1),nvl(2,1) from dual;--1,2

--nvl2(exp1,exp2,exp3) 如果exp1=null,返回exp3;exp1 !=null,返回 exp3
select nvl2(null,1,2),nvl2(3,1,2) from dual;--2,1

--coalesce(exp1,exp2,exp3...)返回第一个不是null的exp的值
select coalesce(null,null,null,null,2,null,5) from dual;--2

--cast类型转换函数
select cast(2345 as varchar2(10)), cast(sysdate as varchar2(30)) from dual;

--decode(exp,search1,result1,search2,result2...,default);
/*
    exp:被操纵对象
    如果exp=searchN字符串,就返回resultN,和case语句执行差不多
    default如果找不到就默认值
*/
select decode('100','99','九九','100','一百','101','一百零一',0) from dual;--一百
0
0
分享到:
评论

相关推荐

    Oracle内建函数大全

    以上只是Oracle内建函数的一部分,实际中还有许多其他函数,如位运算函数、分析函数、游标函数等,它们极大地增强了SQL语言的功能,使得Oracle数据库能够处理各种复杂的数据操作。Oracle Built-in Functions.chm文件...

    Oracle内置函数大全.rar

    本资料“Oracle内置函数大全.rar”包含了一份详细的Oracle内置函数讲解,旨在帮助初学者和进阶用户更好地理解和运用这些函数,提升在Oracle数据库操作中的技能。 Oracle内置函数可以分为多种类型,包括算术函数、...

    Oracle函数列表速查

    单行函数处理单个数据行,对每一行都返回一个结果,而组函数则对多行进行聚合操作,如计数、求和等。 单行函数主要包括字符函数、数字函数、日期函数、转换函数等,下面详细介绍几个常用的单行函数: 1. TO_CHAR...

    Oracle内置SQL函数

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大的功能之一在于它内建的SQL函数库。这些函数在数据查询、处理、分析等任务中扮演着关键角色。本篇将详细介绍Oracle内置的SQL函数,以及在sqlplus...

    Oracle拆分字符串,字符串分割的函数

    `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...

    oracle内置函数

    Oracle数据库系统内建了大量的内置函数,这些函数极大地丰富了SQL语言的功能,使得数据处理更加灵活和高效。本文主要围绕Oracle 8i版本的内置函数进行详细介绍,包括数字格式元素和日期格式元素。 **数字格式元素**...

    oracle基础sql_建表_dml_ddl_dql_及常用内置函数等

    详细介绍了oracle的建表语句 增删改查 内外连接查询 授权用户 建sequence oracle常用内置函数 ddl语句 事务控制语句 tcl 等

    oracle函数和分组

    本篇将详细介绍一些常用的Oracle内建函数,特别是字符函数、数字函数以及分组相关的GROUP BY子句和HAVING子句。 首先,我们来看字符函数。字符函数主要用于处理文本数据,包括: 1. **UPPER函数**:将输入的字符串...

    oracle字符串分割自定义函数

    oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...

    第三章 Oracle常用函数.pdf

    Oracle数据库系统是一个广泛使用的商业关系型数据库管理系统(RDBMS),它提供了多种内建的函数,以便于用户在进行数据查询、数据处理、以及数据转换等操作时能够更加便捷。本文档将详细介绍初学者在学习Oracle...

    oracle 函数

    在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则。 SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符...

    oracle里建一个自增字段示例

    ### Oracle里建一个自增字段示例 在Oracle数据库中,自增字段通常通过序列(Sequence)和触发器(Trigger)来实现。本篇文章将详细解释如何创建一个自增字段,并通过具体的步骤和代码示例来进行说明。 #### 序列...

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    此外,"重建WM_C"标签可能指的是与重建WMSYS用户和WM_CONCAT函数相关的操作,但这并不是Oracle标准术语的一部分。在实际操作中,可能需要进一步的上下文来理解这个标签的确切含义。 总之,Oracle数据库的管理和维护...

    Oracle-函数介绍.pptx

    以下是一些Oracle内建函数的介绍: 1. 数字格式元素: - `999G999`:此格式用于标定数字中的位置,`G`根据NLS_NUMERIC_CHARACTER参数设定的分隔符来分隔数字。 - `9.99`:`D`标记小数点位置,同样受NLS_NUMERIC_...

    一种利用Oracle-java包存储图片的解决方案

    01. 安装Oracle图文存储函数及JavaSource 02. 建立2014年的图文硬盘目录 03. 建立2014年的图文Oracle目录 04. 对Oracle用户XXXX进行目录访问授权2014年 05. 通过图文读写测试程序验证配置正确性(暂无需要可联系)...

    oracle教学ppt(最全面).zip

    - 内建函数:熟悉Oracle提供的各种内建函数,如数学函数、字符串函数、日期时间函数等。 - 自定义函数:了解如何创建和使用用户自定义函数,以及函数重载的概念。 - 存储过程:深入理解存储过程的编写和调用,...

    ORACLE_FUNCTION.rar_oracle

    Oracle内建了多种数学运算函数,如ABS(取绝对值)、SQRT(平方根)、POWER(幂运算)、ROUND(四舍五入)、TRUNC(截断)等。这些函数可以帮助我们进行复杂的数学计算,并对结果进行格式化。 三、字符串处理函数 ...

    Oracle PL_SQL语言初级教程

    在 SQL 中 Oracle 内建了一系列函数,这些函数 都可被称为 SQL 或 PL/SQL 语句,函数主要分为两大类:单行函数和组函数。 • 单行函数和组函数详解(1) • 单行函数和组函数详解(2) • 单行函数和组函数详解(3) • ...

    利用函数返回oracle对象表的三种方法

    在本篇文章中,我们将探讨如何通过函数返回Oracle对象表的三种方法。首先,我们需要了解基础的Oracle对象类型定义: 1. 定义Oracle对象类型: ```sql CREATE OR REPLACE TYPE t_test AS OBJECT( EMPNO NUMBER(4), ...

    Oracle数据库正则表达式

    从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...

Global site tag (gtag.js) - Google Analytics