首页 > 数据库 > Oracle > Oracle 内置函数三
该函数是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||-
------------------------------
||-||
该函数是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(string,substring[,replace_string])
SQL> SELECT REPLACE('TANGYUN121','12','') FROM DUAL;
REPLACE('TANGYUN121','12','')
-----------------------------
TANGYUN1
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函数将一行标志码(ROWID)转换成一字符串。
其具体的语法格式如下:
ROWIDTOCHAR(rowid)
其中:rowid 一ROWID型数据
下面是该函数的使用情况:
SQL>SELECT ROWIDTOCHAR(ROWID) FROM dual;
ROWIDTOCHAR(ROWID)
----------
AAAADCAABAAAAVUAAA
RPAD函数在字符串的后面追加若干字符。
LPAD函数从右面填充指定的字符串。
SQL> SELECT RPAD('TANGYUN',12,'*') FROM DUAL;
RPAD('TANGYUN',12,'*')
----------------------
TANGYUN*****
SCN_TO_TIMESTAMP(number)用于根据输入的SCN返回所对应的大概日期时间。其中number用于指定SCN值。
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函数返回实参的符号。对于负数返回-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(angle)
其中:
angle待求解其正弦的角度。是一角度表达式。可参考函数COS了解从弧度到角度的转换
SQL> SELECT SIN(90*3.1415926/180),SIN(0) FROM DUAL;
SIN(90*3.1415926/180) SIN(0)
--------------------- ----------
1 0
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(n)函数返回一数字的算术平方根。n必须是一个大于等于0的数字。
SQL> SELECT SQRT(100),SQRT(3) FROM DUAL;
SQRT(100) SQRT(3)
---------- ----------
10 1.73205080
SUBSTR返回一字符串得指定字串。
SQL> SELECT SUBSTR('TANGYUNyuntang',-4),SUBSTR('TANGYUNyuntang',5) FROM DUAL;
SUBSTR('TANGYUNYUNTANG',-4) SUBSTR('TANGYUNYUNTANG',5)
--------------------------- --------------------------
tang YUNyuntang
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(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)用于根据输入的TIMESTAMP值返回对应的SCN值。
SQL> SELECT timestamp_to_scn(SYSDATE-1) FROM DUAL;
TIMESTAMP_TO_SCN(SYSDATE-1)
---------------------------
2689640
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函数将一个字符型数据转换成一个日期型数据。
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函数将一个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_SINGLE_BYTE对应。
SQL> SELECT TO_MULTI_BYTE('TANGYUN2010'),'TANGYUN2010' FROM DUAL;
TO_MULTI_BYTE('TANGYUN2010') 'TANGYUN2010'
---------------------------- -------------
TANGYUN2010 TANGYUN2010
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
把中文全角字符转换为英文半角。
SQL> SELECT TO_SINGLE_BYTE(',)') FROM DUAL;
TO_SINGLE_BYTE(',)')
----------------------
,)
替换对应的字符。
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([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函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
用于返回输入字符串的UNICODE字符。
SQL> SELECT UNISTR('0D6') FROM DUAL;
UNISTR('0D6')
---------------
?
UID函数返回一个整数值。对于当前数据库用户来它是唯一的。
SQL> SELECT UID FROM DUAL;
UID
----------
56
该数值来源于V$SESSION中的USER#列。
UPPER函数间返回字符串的大写形式。
SQL> SELECT UPPER('TANgyuN') FROM DUAL;
UPPER('TANGYUN')
----------------
TANGYUN
用于返回嵌套表的实际元素个数。
用于根据输入的列和被选择的行建立嵌套表结果。
用于生成嵌套表的超集(包括所有非空的嵌套表)。
该函数用于取消嵌套表的重复结果,并生成新的嵌套表。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24930246/viewspace-1041574/ ,如需转载,请注明出处,否则将追究法律责任。