oracle 整理系列(三)------一些内部函数

一、数值型函数
  • 返回绝度值 abs()
    SELECT ABS(100),ABS(-100) FROM dual;
  • sign(),返回正负数,正:1;负:-1;0:0
    select sign(100),sign(-100),sign(0) from dual;
  • ceil()返回大的较小整数,floor()返回小的较大整数,round()四舍五入
    SELECT CEIL(4.9),CEIL(-4.9),FLOOR(4.9),FLOOR(-4.9),ROUND(4.9),ROUND(-4.9) FROM dual;
  • power(n,m)返回 n 的 m 次幂
    SELECT POWER(2,4) FROM dual;
  • mod(n,m) 返回n除以m的余数
    SELECT mod(4,3) FROM dual;
  • trunc(n,m) 截取函数,n:需要截取的数,m为精度
  • 返回当年第一天
    SELECT TRUNc(SYSDATE,‘yyyy’),TRUNC(SYSDATE,‘yy’) FROM dual;
  • 返回当月第一天
    SELECT TRUNc(SYSDATE,‘MM’) FROM dual;
  • 返回当前时间
    SELECT TRUNc(SYSDATE,‘dd’),TRUNC(SYSDATE) FROM dual;
  • 不会进行四舍五入,分别返回 199.1、199.19、199
    SELECT trunc(199.199,1),TRUNC(199.199,2),TRUNC(199.199,0.1) FROM dual;
二、字符型函数
  • 返回ascii(x)最左端的字符串码值,只去汉字最左端的一个字
    SELECT ASCII(‘A’) A,ASCII(‘a’) “a”,ASCII(‘汗’) “汉字”,ASCII(‘汗子han’),ASCII(‘Aa’) “Aa” FROM dual;
  • CHR(x)将ASSII码转换成字符,与上边互反
    SELECT CHR(65) A,CHR(47801) “汗”,CHR(48882) “汉字” FROM dual;
  • concat(n,m)和|| 连接两个字符串
    SELECT CONCAT(‘010’,‘转8888’) AS “CONCAT”,‘010’|| ‘转’ || ‘8888’ FROM dual;
  • initcap() 返回字符串,每个单词首字母大写,其他小写
    SELECT initcap(‘i am zhouxudong’) one,INITCAP(‘我 是 i Am zhouxudong’) TWO FROM dual;
  • lower()/upper()转换大小写
    SELECT lower(‘AaBbCc’),UPPER(‘AaBbCc’) FROM dual;
  • nls_initcap(),同上,可以排序,nls_lower()和nls_upper()同理
    SELECT nls_initcap(‘a A g d’,‘nls_sort=SCHINESE_PINYIN_M’) FROM dual;
  • instr(c1,c2,I,[J]) 在一个字符串搜索指定的字符,从第I个开始,第J次出现的位置,全角算一个字符;
    SELECT INSTR(‘桃桃今天来了’,‘来’,1,1)FROM dual;
  • length()/lengthb();返回字符串长度,
    SELECT LENGTH(‘长度aa’),LENGTHB(‘长度aa’) FROM dual;
  • lpad(c1,n,c2) 在c1左c2填充,知道长度n为止,n为总长度
    SELECT LPAD(‘hh’,7,‘ab’) FROM dual;
  • .rpad(c1,n c2) 往右边填充
    SELECT RPAD (‘右边’,10,’*’) FROM dual;
  • ltrim()删除左边、rtrim()删除右边
    SELECT LTRIM(‘xxxleft delete’),LTRIM(‘xxxleft delete’,‘x’) FROM dual;
  • replace(c1,c2,[c3]) c1中的c2 换成c3
    SELECT REPLACE(‘he is a dog’,‘he’,‘you’) FROM dual;
  • substr(c1,i,[j])/substrb(c1,i,[j])从第i个位置截取j个字符串,全角半角有区别
    SELECT substr(‘abcdefg汉字’,2,8),SUBSTRB(‘abcdefg汉字’,2,8)FROM dual;
三、时间函数
  • sysdate,返回当前时间
    SELECT SYSDATE FROM dual;
  • add_months() 延后几个月
    SELECT add_months(sysdate,2) FROM dual;
  • 获取当前,mysql是select now();此处不一样
    SELECT SYSDATE FROM dual;
  • 在当前时间往后加2个月
    SELECT add_months(SYSDATE,2) FROM dual;
  • 查询某个月的最后一天
    SELECT last_day(birthday) FROM student;
  • 往后数,离星期几最近的的时间,就是星期几的前一天,明天的日期不算
    SELECT next_day(SYSDATE,2)FROM dual;
  • 时间间隔
    SELECT months_between (‘1-2月-10’,SYSDATE) FROM dual;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值