ITPub博客

首页 > 数据库 > Oracle > Oracle 内置函数三

Oracle 内置函数三

原创 Oracle 作者:tangyunoracle 时间:2010-11-16 21:44:59 0 删除 编辑

Ø REGEXP_REPLACE

该函数是Oracle10g新增的函数,扩展REPLACE功能,该函数用于按照特定表达式的规则进行替换字符串,即:支持正则表达式。

格式:

REGEXP_REPLACE(SOURCE_STRING,PATTEN[,REPLACE_STRING[,POSITION[,OCCURRENCE[,MATCH_PARAMETER]]]])

SQL> SELECT REGEXP_REPLACE('TANG2010YUN||-||tang2012yun','[a-z]','') FROM DUAL;

REGEXP_REPLACE('TANG2010YUN||-

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

TANG2010YUN||-||2012

SQL> SELECT REGEXP_REPLACE('TANG2010YUN||-||tang2012yun','d','') FROM DUAL;

REGEXP_REPLACE('TANG2010YUN||-

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

TANGYUN||-||tangyun

SQL> SELECT REGEXP_REPLACE('TANG2010YUN||-||tang2012yun','w','') FROM DUAL;

REGEXP_REPLACE('TANG2010YUN||-

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

||-||

Ø REGEXP_SUBSTR

该函数是Oracle10g新增的函数,扩展REPLACE功能,该函数用于按照特定表达式的规则进行替换字符串,即:支持正则表达式。

格式:

REGEXP_SUBSTR(SOURCE_STRING,PATTEN[,REPLACE_STRING[,POSITION[,OCCURRENCE[,MATCH_PARAMETER]]]])

SQL> SELECT REGEXP_SUBSTR('TANG2010YUN||-||tang2012yun','[a-z].*') FROM DUAL;

REGEXP_SUBSTR('TANG2010YUN||-|

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

tang2012yun

SQL> SELECT REGEXP_SUBSTR('TANG2010YUN||-||tang2012yun','[a-z]') FROM DUAL;

REGEXP_SUBSTR('TANG2010YUN||-|

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

T

SQL> SELECT REGEXP_SUBSTR('TANG2010YUN||-||tang2012yun','d{2,}') FROM DUAL;

REGEXP_SUBSTR('TANG2010YUN||-|

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

2010

Ø REPLACE

REPLACE函数在一字符串中搜索一指定的子串,并将其替换成另外一指定串。

REPLACE(string,substring[,replace_string])

SQL> SELECT REPLACE('TANGYUN121','12','') FROM DUAL;

REPLACE('TANGYUN121','12','')

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

TANGYUN1

Ø ROUND

ROUND函数将一日期处理(舍入)成第二个参数指定的形式。

ROUND函数将一数值处理(舍入)成第二个参数指定的形式的十进制数。

SQL> SELECT ROUND(24.9,-1),ROUND(24.4),ROUND(24.45,1) FROM DUAL;

ROUND(24.9,-1) ROUND(24.4) ROUND(24.45,1)

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

20 24 24.5

Ø ☆ROWIDTOCHAR

ROWIDTOCHAR函数将一行标志码(ROWID)转换成一字符串。

其具体的语法格式如下:

ROWIDTOCHAR(rowid)

其中:rowid 一ROWID型数据

下面是该函数的使用情况:

SQL>SELECT ROWIDTOCHAR(ROWID) FROM dual;

ROWIDTOCHAR(ROWID)

----------

AAAADCAABAAAAVUAAA

Ø RPAD

RPAD函数在字符串的后面追加若干字符。

LPAD函数从右面填充指定的字符串。

SQL> SELECT RPAD('TANGYUN',12,'*') FROM DUAL;

RPAD('TANGYUN',12,'*')

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

TANGYUN*****

Ø SCN_TO_TIMESTAMP

SCN_TO_TIMESTAMP(number)用于根据输入的SCN返回所对应的大概日期时间。其中number用于指定SCN值。

Ø RTRIM

RTRIM函数删除字符串右边的前缀字符。一般前缀字符总是空格。

右边单个字符单个字符的去除。这里是用单个字符去匹配,并不是用两个字符去匹配,但是必须是在最右边

SQL> SELECT LTRIM('****TANGYUN') "TRIM",LTRIM('***!*!***TANGYUN','*!') "TRIM" FROM DUAL;

SQL> SELECT RTRIM('TANGYUN****') "RTRIM",RTRIM('TANGYUN****','*') "RTRIM",RTRIM('TANGYUN***!*!***','*!') "RTRIM" FROM DUAL;

RTRIM RTRIM RTRIM

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

TANGYUN**** TANGYUN TANGYUN

Ø SIGN

SIGN函数返回实参的符号。对于负数返回-1,0返回0,正数返回+1。

SQL> SELECT SIGN(-100),SIGN(0),SIGN(100) FROM DUAL;

SIGN(-100) SIGN(0) SIGN(100)

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

-1 0 1

Ø SIN

SIN函数返回一个角度的正弦值。

其具体的语法格式如下:

SIN(angle)

其中:

angle待求解其正弦的角度。是一角度表达式。可参考函数COS了解从弧度到角度的转换

SQL> SELECT SIN(90*3.1415926/180),SIN(0) FROM DUAL;

SIN(90*3.1415926/180) SIN(0)

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

1 0

Ø ☆SOUNDEX

SOUNDEX函数根据以下规则返回一个字符串的发音描述。

1、保留字符串的首字母

2、删除下面的所有字母:a、e、h、I、o、u、w和y。

3、首字母后面的任一字母均按如下规则匹配于某一数字:

b,f,p,v=1

c,g,j,k,q,s,x,z=2

d,t=3

I=4

m,n=5

r=6

4、结果被缩写并转换成一个4位的数字

其具体的语法格式如下:

SOUNDEX(string)

其中:

string 任意字符串

下面是该函数的使用情况:

SQL> SELECT SOUNDEX('Gennick'),SOUNDEX('Genick'),SOUNDEX('Genyk') FROM DUAL;

SOUNDEX('GENNICK') SOUNDEX('GENICK') SOUNDEX('GENYK')

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

G520 G520 G520

Ø SQRT

SQRT(n)函数返回一数字的算术平方根。n必须是一个大于等于0的数字。

SQL> SELECT SQRT(100),SQRT(3) FROM DUAL;

SQRT(100) SQRT(3)

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

10 1.73205080

Ø SUBSTR/ SUBSTRB

SUBSTR返回一字符串得指定字串。

SQL> SELECT SUBSTR('TANGYUNyuntang',-4),SUBSTR('TANGYUNyuntang',5) FROM DUAL;

SUBSTR('TANGYUNYUNTANG',-4) SUBSTR('TANGYUNYUNTANG',5)

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

tang YUNyuntang

Ø TAN

TAN函数返回一个角度的正切值。

其具体的语法格式如下:

TAN(angle)

其中:angle用弧度表示。可参考函数COS了解从弧度到角度的转换

SQL> SELECT TAN(225*3.1415926535/180),TAN(0),TAN(1) FROM DUAL;

TAN(225*3.1415926535/180) TAN(0) TAN(1)

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

0.999999999775517 0 1.55740772

Ø TANH

TANH函数返回一个角度的十六进制正切值。TANH(angle)

SQL> SELECT TANH(225*3.1415926535/180),TANH(0) FROM DUAL;

TANH(225*3.1415926535/180) TANH(0)

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

0.999223894878467 0

Ø TIMESTAMP_TO_SCN

TIMESTAMP_TO_SCN(timestamp)用于根据输入的TIMESTAMP值返回对应的SCN值。

SQL> SELECT timestamp_to_scn(SYSDATE-1) FROM DUAL;

TIMESTAMP_TO_SCN(SYSDATE-1)

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

2689640

Ø TO_CHAR

TO_CHAR函数将一个日期型数据转换成一个字符型数据。

TO_CHAR函数将一个数值型数据转换成一个字符型数据。

SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD'),SYSDATE FROM DUAL;

TO_CHAR(SYSDATE,'YYYY-MM-DD') SYSDATE

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

2010-10-31 2010-10-31

Ø TO_DATE

TO_DATE函数将一个字符型数据转换成一个日期型数据。

SQL> SELECT TO_DATE('2010-10-31','YYYY-MM-DD'),SYSDATE FROM DUAL;

TO_DATE('2010-10-31','YYYY-MM- SYSDATE

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

2010-10-31 2010-10-31

Ø TO_LOB

TO_LOB函数将一个LONG或LONG RAW型数据转换成下列类型:CLOB、BLOB或NCLOB。当仅仅需要在INSERT语句中用LONG型数据代替LOB型数据时,可以使用该函数。

其具体的语法格式如下:

TO_LOB(long_value)

其中:

long_value 待转换为CLOB或NCLOB等类型数据的一个 LONG或LONG RAW型数据。LONG RAW型数据转 换成BLOB型数据

下面是该函数的使用情况:

INSERT INTO new_table(clob_value) SELECT TO_LOB(long_value) FROM old_table;

Ø TO_MULTI_BYTE

该函数用于将单字节的字符串变为多字节的字符串。与TO_SINGLE_BYTE对应。

SQL> SELECT TO_MULTI_BYTE('TANGYUN2010'),'TANGYUN2010' FROM DUAL;

TO_MULTI_BYTE('TANGYUN2010') 'TANGYUN2010'

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

TANGYUN2010 TANGYUN2010

Ø TO_NUMBER

TO_NUMBER函数将一字符串转换成一数字。

SQL> SELECT TO_NUMBER('20.10'),TO_NUMBER('20') FROM DUAL;

TO_NUMBER('20.10') TO_NUMBER('20')

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

20.1 20

SQL> SELECT TO_NUMBER('$123,456.78','$999,999.99') FROM DUAL;

TO_NUMBER('$123,456.78','$999,

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

123456.78

Ø TO_SINGLE_BYTE

把中文全角字符转换为英文半角。

SQL> SELECT TO_SINGLE_BYTE(',)') FROM DUAL;

TO_SINGLE_BYTE(',)')

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

,)

Ø TRANSLATE

替换对应的字符。

SQL> SELECT TRANSLATE('SMITH 20','0123456789','##########') FROM DUAL;

TRANSLATE('SMITH20','012345678

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

SMITH ##

SQL> SELECT REPLACE(TRANSLATE('SMITH 20','0123456789','##########'),'#','') FROM DUAL;

REPLACE(TRANSLATE('SMITH20','0

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

SMITH

Ø TRIM

TRIM函数将字符串的前缀(或尾随)字符删除。

TRIM([LEADING|TRAILING|BOTH][trimchar FROM] string)

LEADING 指明仅仅将字符串的前缀字符删除

TRAILING 指明仅仅将字符串的尾随字符删除

BOTH 指明既删除前缀字符,也删除尾随字符。这也是默认方式

SQL> SELECT TRIM(' Ashley ') FROM DUAL;

TRIM('ASHLEY')

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

Ashley

SQL> SELECT TRIM(LEADING '*' FROM'***Ashley***') FROM DUAL;

TRIM(LEADING'*'FROM'***ASHLEY*

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

Ashley***

Ø TRUNC

TRUNC函数为指定元素而截去的日期值。

TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

Ø UNISTR

用于返回输入字符串的UNICODE字符。

SQL> SELECT UNISTR('0D6') FROM DUAL;

UNISTR('0D6')

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

?

Ø UID

UID函数返回一个整数值。对于当前数据库用户来它是唯一的。

SQL> SELECT UID FROM DUAL;

UID

----------

56

该数值来源于V$SESSION中的USER#列。

Ø UPPER

UPPER函数间返回字符串的大写形式。

SQL> SELECT UPPER('TANgyuN') FROM DUAL;

UPPER('TANGYUN')

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

TANGYUN

Ø CARDINALITY(nest_table)

用于返回嵌套表的实际元素个数。

Ø COLLECT(column)

用于根据输入的列和被选择的行建立嵌套表结果。

Ø POWERMULTISET(EXPR)

用于生成嵌套表的超集(包括所有非空的嵌套表)。

Ø SET(nest_table)

该函数用于取消嵌套表的重复结果,并生成新的嵌套表。

[@more@]

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

上一篇: Oracle 内置函数一
请登录后发表评论 登录
全部评论
有空写写一写,没空看一看。。。 微信号:tangyun0925
  • 博文量
    116
  • 访问量
    1839887