一、对日期进行操作
-- 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'