ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE中的单行函数

ORACLE中的单行函数

原创 Linux操作系统 作者:gaopengtttt 时间:2012-04-23 17:40:50 0 删除 编辑

1、字符

lower :小写

upper :大写

substr:取字符

ExpSUBSTR('The Three Musketeers',1,3)

instr :返回从第三个字符开始,第二次出现i的位置

ExpINSTR('Mississippi', 'i',3,2)

initcap:首字母大写

length:查看字符的长度

lengthb:查看字符的长度按照BIT算,中文是2BIT

ltrim:左边消除指定的字符

lpad :左边补足相应的字符

rtrim :右边消除指定的字符到最后一个未出现的位置为止

ExpRTRIM('Mississippi','ip')

rpad:右边补足相应的字符,列子补足字段table_name38位,右边用.补足

 RPAD(table_name,38,'.')

Replace:完全匹配的替换相应字符

ExpREPLACE('uptown','up','down')

Translate:对对应字符进行完全转换、

ExpTRANSLATE('fumble','uf','aR')

Trim:去掉首尾(也可以只去掉左边和右边的,但是意义不大可以用ltrimrtrim代替)的相应字符 ,列子中为去掉首尾的. ,默认为去掉首尾的空格

Expselect length(trim(both '.'from '........woai......')),length('      woai       ') from dual;

2、数字

Abs:取绝对值

Expabs(-10)

ceil :取整,向正无穷取

Exp:

SQL> select ceil(10.2),ceil(-10.2) from dual;

CEIL(10.2) CEIL(-10.2)

---------- -----------

        11         -10

Floor:取整,向负无穷取

Exp

SQL> select floor(10.2),floor(-10.2) from dual;

FLOOR(10.2) FLOOR(-10.2)

----------- ------------

         10          -11

log 取幂

Exp:

SQL> select log(2,64) from dual;

 

 LOG(2,64)

----------

         6

mod 取余

Exp:

SQL> select mod(35,8),mod(-49,8) from dual;

 

 MOD(35,8) MOD(-49,8)

---------- ----------

         3         -1

power 幂集

Exp:

SQL> select power(8,3) from dual;

POWER(8,3)

----------

       512

round 四舍五入

Exp:

SQL> select round(15.555,2),round(15.554,2) from dual;

 

ROUND(15.555,2) ROUND(15.554,2)

--------------- ---------------

          15.56           15.55

 

trunc 截断,不同于四舍五入

Exp

SQL> select round(15.555,2),round(15.554,2),trunc(15.555,2),round(15.554,2) from dual;

 

ROUND(15.555,2) ROUND(15.554,2) TRUNC(15.555,2) ROUND(15.554,2)

--------------- --------------- --------------- ---------------

          15.56           15.55           15.55           15.55

 

bitand:对于位取值,然后换算2进制为10进制

比如 100,110  第一位 都是1取1 第二位前者为1或者为0 取0,第三位都为0取0,下面的列子是v$lock中 tx id1 对应 v$transaction XIDUSN ,XIDSLOT的换算,高16位为XIDUSN,低16位为XIDSLOT

 

exp:

SQL> select trunc(655404/power(2,16)),bitand(655404,to_number('ffff','xxxx')) from dual;
 
TRUNC(655404/POWER(2,16)) BITAND(655404,TO_NUMBER('FFFF'
------------------------- ------------------------------
                       10                             44

 

bin_to_num:二进制转换为10进制

Exp:

 SQL> select BIN_TO_NUM(1,1,1,1) from dual;
 
BIN_TO_NUM(1,1,1,1)
-------------------
                 15

3、日期

add_months:增加相应的月份

Exp

SQL> select add_months(sysdate,1) from dual;

 

ADD_MONTHS(SYSDATE,1)

---------------------

2012/5/23 23:18:58

current_date:会话当前时间

Exp

select sysdate,current_date,sessiontimezone from dual;

CURRENT_TIMESTAMP:会话当前时间带上时区

Exp

SQL> SELECT CURRENT_TIMESTAMP FROM dual;

 

CURRENT_TIMESTAMP

-------------------------------------------------

23-APR-12 11.39.00.676507 PM +08:00

EXTRACT:抽取相应的时间部分

Exp

 SELECT SYSDATE

         ,EXTRACT(YEAR FROM SYSDATE ) YEAR

         ,EXTRACT(MONTH FROM sysdate) MONTH

         ,EXTRACT(day FROM sysdate) DAY

   FROM dual;

last_day :月的最后一天

Exp

select last_day(add_months(sysdate,1)) from dual;

 

months_between:月份相减

Exp:

SQL> select months_between(sysdate,add_months(sysdate,1)) from dual;

 

MONTHS_BETWEEN(SYSDATE,ADD_MON

------------------------------

                            -1

待续。。。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7728585/viewspace-722054/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
wxh gp_22389860 <<深入理解MySQL主从原理专栏>> 发布 可加WX了解

注册时间:2008-10-13

  • 博文量
    700
  • 访问量
    2971229