-- oracle 中的常用函数


select concat('nishi','shabi') from dual -- 链接两个字符串
select 'ni'||'shi'||'shabi' from dual -- 链接多个字符串
select initcap('ni shi shi bi') from dual -- 首字母大写
select instr('ni shi shi bi','s',5) from dual -- 返回子字符串在母字符串中首次出现
--的位置,下标从1开始。如果有第三个参数,代表从第几个字符开始查找。第四个参数代表
--查询第几次出现的字符串的下标,默认是1。查询不到返回0。
select upper('fdalokjfodafjda  fdasfd') from dual-- 所有字母大写
select lower('fdaFDFGFDSfaesdg  FGEfa') from dual-- 所有字母小写
-- 在母字符串的右边(左边字符串的右边)补充子字符串。数字代表补充之后达到的字符数量。
select rpad('nishi',15,'shabi') from dual
select lpad('shabi',12,'nishi') from dual
--在右边删除指定字符串的函数。第一个参数代表要处理的字符串,如果没有第二个参数代
--表删除空格,如果有第二个参数代表要删除第二个参数指定的字符串
select rtrim('fdsakjjfn 4156 5sa22sa  asa','a') from dual
select ltrim('  fdsakjjfn 4156 5sa22sa  asa') from dual
--截取字符串。第一个参数代表要处理的字符串,第二个参数代表从第几位开始截取,默认
--从1开始。第三个参数代表最多截取多少个字符
select substr('nijiushigedashabishabi',15,8) from dual
--替换字符串。第一个参数代表要处理的字符串。第二个参数表示要替换的字符串,第三个
--参数表示替换后的字符串
select replace('fdsaffdsaf','ff','gg') from dual
--分别从字符串2的两边开始删除指定的字符1,如果第前两个参数和from省略,则删除字
--符串2两边的空格
select trim(leading 's' from 'sp   ss   ps') from dual
select trim(trailing 's' from 'sp   ss   ps') from dual
select trim(both 's' from 'sp   ss   ps') from dual
--处理数值类型的常用函数
select abs(-45) from dual -- 返回绝对值
--返回大于或等于给出数字的最小整数
select ceil(2.55) from dual
--对给定的数字取整数
select floor(2.99) from dual
--返回一个n1除以n2的余数
select mod(10,3) from dual
--返回n1的n2次方
select power(2,5) from dual
--取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
select sign(20) from dual
--返回数字的根
select sqrt(9) from dual
--按照指定的精度四舍五入
select round(2.6) from dual
--按照指定的精度截取一个数,第二个参数表示取小数点后面几位数
select trunc(2.993,2) from dual
--日期函数
-- 获取当前日期
select sysdate from dual
-- 增加或减去月份
select add_months(sysdate,1) from dual
select add_months(sysdate,-1) from dual
-- 返回日期的最后一天
select last_day(sysdate) from dual
--给出date2和date1相差的月份
select months_between(sysdate,'6-3月-2019') from dual
select months_between('10-9月-2018','6-9月-2019') from dual
-- 给出日期date和星期x之后计算下一个星期的日期
select next_day(sysdate,'星期一') from dual
-- 按指定格式截取日期
select trunc(sysdate, 'year') from dual; --截取到年(本年的第一天)
2019 / 1 / 1

select trunc(sysdate, 'q') from dual; --截取到季度(本季度的第一天)
2019 / 4 / 1

select trunc(sysdate, 'month') from dual; --截取到月(本月的第一天)
或select trunc(sysdate, 'mm') from dual; --截取到月(本月的第一天)
2019 / 4 / 1

select trunc(sysdate, '') from dual;--空
--修改日期格式为年月日时分秒:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为年月日时分秒格式
select to_char(sysdate,'yyyy')   nowYear from dual;      //获取时间的年
select to_char(sysdate,'mm')    nowMonth from dual;  //获取时间的月
select to_char(sysdate,'dd')      nowDay from dual;       //获取时间的日
select to_char(sysdate,'hh24')  nowHour from dual;     //获取时间的时
select to_char(sysdate,'mi')      nowMinute from dual;  //获取时间的分
select to_char(sysdate,'ss')       nowSecond from dual;  //获取时间的秒
--把字符串转换为日期 有两个参数,第一个参数是要转换的日期的字
--符串,第二个参数日期字符串的格式
select to_date(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

猜你喜欢

转载自www.cnblogs.com/hsx1996/p/10822950.html