ORACLE函数学习(自学)

留以后观察:
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语句简单了许多





  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值