oracle函数应用

一、对日期进行操作

-- add_months 添加/减去月份

SELECT to_char(add_months(to_date('2017-12-12','yyyy-mm-dd'),2),'yyyy-mm-dd') rec FROM dual; -- 2018-02-12

SELECT to_char(add_months(to_date('2017-12-12','yyyy-mm-dd'),-2),'yyyy-mm-dd') rec FROM dual; -- 2017-10-12

-- last_date 返回指定日期所在月的最后一天  last_day(指定日期)

SELECT last_day(to_date('20180112','yyyymmdd')) FROM dual;

-- months_between 返回 date2-date1 的月份  months_between(date2,date1)

SELECT months_between(to_date('20180212','yyyymmdd'),to_date('20170512','yyyymmdd')) rec FROM dual;  -- 9

-- next_day 返回从 指定日期 开始计算下一个 星期X 的日期

SELECT next_day(to_date('2018-05-01','yyyy-mm-dd'),'星期一') rec FROM dual;  -- 2018/5/7

 

-- trunc处理日期   trunc(待处理日期,日期格式)

SELECT SYSDATE FROM dual; -- 2018/5/10 9:06:23

SELECT TRUNC(SYSDATE) FROM dual; --获取系统时间 年月日   2018/5/10

SELECT TRUNC(SYSDATE,'yyyy') FROM dual;-- 返回当年第一天  2018/1/1

SELECT TRUNC(SYSDATE,'mm') FROM dual; -- 返回当月第一天   2018/5/1

SELECT TRUNC(SYSDATE,'d') FROM dual;-- 返回本星期第一天(星期日)  2018/5/6

-- extract获取日期年月日   extract(要获取的内容【年,月,日】 from   日期)

SELECT SYSDATE FROM dual; -- 2018/5/10 9:06:23

SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;--返回日期的年   2018

SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;--返回日期的月  5

SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;--返回日期的日   10

二、对数值进行操作

--返回指定值得绝对值  abs(指定值)

SELECT ABS(12) rec1 ,ABS(-12) rec2 FROM dual;  -- 12  12 

 

--取大于等于给定数字的最小整数  ceil(给定数字)

SELECT CEIL(3.1415926) rec FROM dual;  -- 4

 

--取小于等于给定值得最大整数 floor(给定数字)

SELECT FLOOR(12.67) rec FROM dual;  -- 12

 

--trunc 按精度截取数字   trunc(待处理数字,要保留小数位位数)

select trunc(125.98) from dual; -- 125

select trunc(125.125,2) from dual;  -- 125.12

select trunc(125.125,-1) from dual;  -- 120

 

-- round四舍五入   round(待处理数字,要保留小数位位数)

select ROUND(125.98) from dual; -- 126

select ROUND(125.125,2) from dual;  -- 125.13

select ROUND(125.125,-1) from dual;  -- 130

 

--mod返回n1除以n2的余数  mod(n1,n2)

SELECT MOD(10,3) rec FROM dual; -- 1

 

--power返回n1的n2次方根  power(n1,n2)

SELECT POWER(2,4) rec FROM dual;  -- 16

三、对字符串进行操作

--返回指定字符对应的十进制数

SELECT ASCII('a') AS a , ASCII('A') AS A FROM dual;    --  'a=97  A=65'

 

--返回十进制整数对应字符

SELECT CHR(54463) AS nub1 , CHR(1200) AS nub2 FROM dual;    -- '54463->钥  1200->? '

 

--连接多个字符串

SELECT '你' || '是' || '风' AS rec FROM dual;    -- '你是风'

 

--将字符串首字母改大写输出

SELECT INITCAP('monday') AS 星期一 FROM dual;    -- 'Monday'

--在一个字符串中搜索指定字符串,返回发现指定字符串的位置 instr(被搜索字符串,要搜索字符串,搜索开始位置【默认为1】)

SELECT INSTR('hello world!','or','1') AS rec FROM dual;    -- '8'

 

--返回字符串长度

SELECT LENGTH('goodby!') AS 长度 FROM dual;    -- '7'

 

--将所有字符小写

SELECT LOWER('aBcDeFgHiJkL') AS lowout FROM dual;    -- 'abcdefghijkl'

 

--将所有字符大写

SELECT UPPER('aBcDeFgHiJkL') AS uppout FROM dual;    -- 'ABCDEFGHIJKL'

 

--在列的左边粘贴字符    rpad(要粘贴的字符串,粘贴字符串的长度,不够字符用此字符来填充)

SELECT RPAD('string',10,'*') AS rec FROM dual;    -- 'string****'

 

--在列的右边粘贴字符    lpad(要粘贴的字符串,粘贴字符串的长度,不够字符用此字符来填充)

SELECT LPAD('string',10,'*') AS rec FROM dual;    -- '****string'

 

--应用

SELECT RPAD(LPAD('string',10,'*'),14,'*') AS rec FROM dual;    -- '****string****'

 

--删除指定字符串左边的对应字符  ltrim(指定字符串,要删除字符)

SELECT LTRIM('   hello world!   ','   ') AS rec FROM dual;    -- 'hello world!   '

 

--删除指定字符串右边的对应字符  rtrim(指定字符串,要删除字符)

SELECT RTRIM('   hello world!   ','   ') AS rec FROM dual;    -- '   hello world!'

 

--应用

SELECT LTRIM(RTRIM('   hello world!   ','   '),'   ') AS rec FROM dual;    --  'hello world!'

 

--截取字符串  substr(要截取的字符串,从第几位开始截取,截取几位)

SELECT SUBSTR('2018-05-09',0,4) AS rec FROM dual;  --  '2018'

 

--替换字符串  replace(要操作的字符串,旧字符串,新字符串)

SELECT REPLACE('I am boy!','boy','girl') AS rec FROM dual; -- 'I am girl!'

 

--创建表

CREATE TABLE tab(xm VARCHAR(8));

--设置参数值

INSERT INTO tab VALUES('wether');

INSERT INTO tab VALUES('weather');

INSERT INTO tab VALUES('he');

--返回一个与给定字符串读音相同的字符串

SELECT xm FROM tab WHERE SOUNDEX(xm)=SOUNDEX('wether');

 

--剪掉字符串左右的相同字符(必须是最外边的)  trim(要删除的字符 from 被删除字符串)

SELECT TRIM('s' FROM 'strings') rec FROM dual;  --  'tring'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值