您的位置:首页 > 数据库 > Oracle

ORACLE函数学习(自学)

2016-01-18 20:19 681 查看
留以后观察:
select ascii('A'),ascii('Z') from dual;   --65 90
select chr('65'),chr('90') from dual; --A Z --ascii函数 --chr ascii反函数

select concat('123','456') from dual;  --123456
select concat(null,'123') from dual;  --123 --concat函数将第二个参数连接到第一个参数后面

select initcap('abc') from dual;     --Abc
select initcap('123') from dual;     --123 --initcap函数 首字母大写

select instr('abcb','b',-1,1) from dual;  --2 --instr函数 第一个参数元字符串,第二个参数字符串中的关键字,第三个参数为正从左往右值为第一个参数查询的起始位置索引,若为负数从右往左查询,第四个参数表示该关键字在第一个参数中第几次出现,三四默认值都为1

select instrb('abcb','bc',1,1) from dual; --2 --感觉和instr并没有什么区别

select length('abc') from dual;    --3 --length函数 返还一串字符的长度

select lower('ABC') from dual;     --abc --lower函数 返回小写的字符

select ltrim('abc','ab') from dual;  --c
select ltrim('vabc','ab') from dual;--(无效) --ltrim函数 根据第二个字符查找第一个字符从最左边开始,若出现参数二关键词,则将其删除 与rtrim()函数用法相同

select replace('abc','ab','AB') from dual;--ABc  --replace函数 用参数三替换参数一中存在的参数二

select substr('message',1,4) from dual; --mess --substr函数 切割字符串,二三参数,起始位与结束位,若参数三不给定则到串的尾部

select soundex('abc') ,soundex('ABC') ,soundex('dawson')  from dual;  --what meanings?

select translate('ABC','A','D') from dual;  --DBC --感觉应该和replace函数用法相同

select upper('abc') from dual;             --ABC --大写转换函数
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select abs('-123') from dual;           --`123--返回其绝对值

select ceil('123.123') from dual;       --124 --返回大于或等于参数一的最小整数

select exp('1') from dual;              --E1 --返回E的N次幂

select floor('123.123') from dual;      --123 --返回小于或等于参数一的最大整数

select ln('2') from dual;               --返回参数一自然对数,参数必须大于0

select log('2','2') from dual;          --返回参数一为底参数二的对数

select mod('3','2') from dual;          --1 --返回参数一除以参数一的余数

select round('126.123','-1') from dual;  --130
select round('123.123','-1') from dual;  --120
select round('123.123','1') from dual;   --123.1  --第二个参数为负,则返回小数点前几位(根据参数来定)(四舍五入), 若为正,则返回小数点后几位(根据参数来定)根据之后的那位小数来四舍五入 注:参数二必须为整数

select sign('-1') from dual;    --(-1)
select sign('-2222') from dual; --(-1)
select sign('1') from dual;     -- 1
select sign('2222') from dual;  -- 1
select sign('0') from dual;     -- 0  如果参数为负返回-1,参数为正 返回1,参数为0 返回0

select trunc('123.1234','2') from dual;   --123.12
select trunc('123.1234') from dual;       --123
select trunc('123.1234','-2') from dual;  --100 注:没有四舍五入   (可以截断时间的如:trunc(sysdate,'yyyy')) --> 当前的年份和这个月份的第一天

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

select add_months(sysdate,'12') from dual;  --2016/.......
select add_months(sysdate,'-12') from dual; --2014/......返回当前时间,再加上第二个参数的时间(月份)

select last_day(sysdate) from dual;         --返回b期

select months_between(sysdate,sysdate) from dual;  --0 返回两个日期参数之间的月份差值

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

select round(sysdate,'YYYY') from dual;     --2016/1/1 --返回,该日期以参数二的格式进行输出,当前月的第一天

select trunc('89.89923','2') from dual;     --89.89 截取数字
select trunc(sysdate) from dual;            --截取日期,去除时分秒
select trunc(sysdate,'yyyy') from dual;     --目前年份月份的第一天
select trunc(sysdate,'Q') from dual; 		--目前年份月份的第一天
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

select nvl('参数一','参数二');              --如果参数一为空则返回参数二,否则返回参数一

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

SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (要查询分页数据的表) A WHERE ROWNUM <= 60 ) WHERE RN >= 1 --oracle分页  60--表示总共60条,1--从第一条显示,一页60条

SELECT * FROM ( SELECT A.*, ROWNUM RN
FROM (要查询分页数据的表) A WHERE ROWNUM <= 60 ) WHERE RN >= 41 --60表示总共60条数据, 41--表示从第41条开始显示,一页显示20条数据																 --

SELECT /*+ FIRST_ROWS */ * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21
----------------------------------------------------------------------------------------------------------------------------------------------------------
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

decode(字段或字段的运算,值1,值2,值3)       这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
 当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: