美文网首页
Oracle 函数大全

Oracle 函数大全

作者: 32b701b24e5b | 来源:发表于2019-07-22 13:11 被阅读0次

    https://www.cnblogs.com/bbliutao/archive/2017/11/08/7804263.html

    F.1字符函数——返回字符值

    (chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,trim/ltrim/rtrim,soundex,substr,translate,upper)

    说明:可以sql和plsql中使用

    CHR

    语法: chr(x)

    功能:给出整数X,返回对应的ASCII码字符。CHR和ASCII是一对反函数。

    SQL> select chr(54740) 别名1,chr(65) 别名2 from dual;

    别名1 别名2

    赵 A


    CONCAT

    语法: CONCAT(string1,string2)

    功能:连接两个字符串

    SQL> select concat('010-','88888888')||'23' 连接 from dual;

    连接

    010-8888888823


    INITCAP

    语法:INITCAP(string)

    功能:返回字符单词首字母大写,其余小写,单词用空格和非字母字符分隔。

    SQL> select initcap('smith hEllo') upp from dual;

    UPP

    Smith Hello


    LOWER

    语法:LOWER(string)
    
     功能:所以字母小写
    
     SQL> select lower('AaBbCcDd') AaBbCcDd from dual;
    
    
    
     AaBbCcDd
    
     aabbccdd
    

    LPAD/RPAD

    语法:LPAD/RPAD(string1,x[,string2])

    功能:在string1字符左边或右边粘贴数个string2字符,直到字符总字节数达到x字节。string2默认为空格。

    如果string2的长度要比X字符少,就按照需要进行复制。如果string2多于X字符,则仅string2前面的X各字符被使用。如果string1长度大于x,则返回string1左端x个字符。

    RPAD 在列的右边粘贴字符

    LPAD 在列的左边粘贴字符

    SQL> select lpad(rpad('gao',10,''),17,'')from dual;

    LPAD(RPAD('GAO',1

    *******gao*******

    不够字符则用*来填满


    NLS_INITCAP

    语法:NLS_INITCAP(string[,nlsparams])

    功能:返回字符串每个单词第一个字母大写而单词中的其他字母小写的string,nlsparams

    指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’ 这里sort制订了一个语言排序序列。


    NLS_LOWER

    语法:NLS_LOWER(string[,nlsparams])

    功能:返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。

    Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。


    NLS_UPPER

    语法:NLS_UPPER(string[,nlsparams])

    功能:返回字符串中的所有字母都是大写的形式的string。不是字母的字符不变。nlsparams参数的形式与用途和NLS_INITCAP中的相同。如果没有设定参数,则NLS_UPPER功能和UPPER相同。

    使用位置:过程性语句和SQL语句。


    REGEXP_REPLACE

    语法:REGEXP_REPLACE(str1,pattem[,str2[,pos[,occ[,par]]]])

    功能:10g新增函数,扩展了REPLACE函数的功能,并且用于按照特定正则表达式的规则替换字符串。其中参数str1指定源字符表达式,pattem指定正则表达式,str2指定替换字符串,pos指定起始搜索位置,occ指定替换出现的第几个字符串,par指定默认匹配操作的文本串。

    select REGEXP_REPLACE(a,’(.)’,’\1’) a from count;

    A r g e n t i n a

    体会NVL为DECODE,只支持NVL()内不再有其它括号()

    select a,

       instr(upper(a), 'NVL(', 1) a3,
    
       instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1) a4,
    
       substr(a,instr(upper(a), 'NVL(', 1),instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1)-instr(upper(a), 'NVL(', 1)+1) a41,
    
       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4) a5,
    
       REGEXP_REPLACE(
    
       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
    
       '(.*),(.*)','\2,\1'
    
       ) a6,
    
       REGEXP_REPLACE(
    
       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
    
       '(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'
    
       ) a7,
    
       substr(a,1,instr(upper(a), 'NVL(', 1)-1)||REGEXP_REPLACE(
    
       substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
    
       '(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'
    
       )||substr(a,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)+1) a8
    

    from temp_liut a;


    判断是否是数字

    regexp_replace(a, '\d+', '') is null

    REGEXP_SUBSTR

    语法:REGEXP_SUBSTR(str1,pattem [,pos[,occ[,par]]])

    功能:10g新增函数,扩展了SUBSTR函数的功能,并且用于按照特定表达式的规则返回字符串的子串。其中参数str1指定源字符表达式,pattem指定规则表达式, pos指定起始搜索位置,occ指定替换出现的第几个字符串,par指定默认匹配操作的文本串。

    Select REGEXP_SUBSTR(‘http://www.oracle.com/products’,’http://([[:alnum:]]+.?)’) a from dual;

    a

    http://www.oracle.com/


    REPLACE

    语法:REPLACE(string,search_str[,replace_str])

    功能:把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。

    REPLACE('string','s1','s2')

    string 希望被替换的字符或变量

    s1 被替换的字符串

    s2 要替换的字符串

    SQL> select replace('he lohe you','he','i') from dual;

    replace('he lohe you','he','i')

    i loi you


    TRIM/LTRIM/RTRIM

    语法1:LTRIM/RTRIM(string1,[string2])

    语法2:trim([string2] from string1)

    语法1功能:中删除从左/右边算起出现在string1中的字符string2,string2如果是多个字符则逐个单字符比对删除,tring2被缺省设置为单个的空格。当遇到不在string2中的第一个字符,结果就被返回了;

    语法2功能:删除左右两边出现在string1中的字符string2,tring2必须为单字符,否则报错。

    select ltrim(rtrim(' gao qian jing ',' '),' ') from dual;

    gao qian jing

    select ltrim('abaaaabbbcda','ab') from dual;

    cda

    select trim('a' from 'abacda') from dual;

    bacd


    SOUNDEX

    语法: SOUNDEX(string)

    功能: 返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助,如果字符发音相同,则返回的结果会一致.

    SOUNDEX 返回一个与给定的字符串读音相同的字符串

    SQL> create table table1(xm varchar(8));

    SQL> insert into table1 values('weather');

    SQL> insert into table1 values('wether');

    SQL> insert into table1 values('gao');

    SQL> select xm from table1 where soundex(xm)=soundex('weather');

    XM

    weather

    wether


    SUBSTR

    语法: SUBSTR(string,a[,b])

    功能:截取字符串,从第a个开始取b个字符,这个务必要注意,是字符。 vachar2最长4000个字节,GBK编码中一个中文字符占2个字节,韩文字符占4个字节,如果string是date或者number的数据类型,会自动转化为varchar2。

    SQL> select substr('13088888888',3,8) 截取字符串 from dual;

    截取字符串

    08888888

    select SUBSTR(t.a,4),a from temp_liut t;

    JAN-00 04-jan-00


    TRANSLATE

    语法: TRANSLATE(string,from_str,to_str)

    功能: 将字符string按照from_str与to_str的对应规则进行处理,返回将所出现的from_str中的每个字符替换为to_str中的相应字符以后的string. TRANSLATE是REPLACE所提供的功能的一个超集.如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string中被删除,因为它们没有相应的替换字符. to_str不能为空.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL.

    Select TRANSLATE('2abc2234','01234abcde','99999XXXXX') tra from dual

    9XXX9999

    select replace(TRANSLATE('as中国fd1234','1234567890','0000000000'),'0') from dual;

    查找字符串',01234,2342,2,'中逗号出现次数

    select length(translate(',01234,2342,2,', 'a0123456789', ' ')) from dual;

    判断字符串是否是数字

    replace(translate(a, '0123456789', '0'),'0') is null

    regexp_replace(a, '\d+', '') is null

    UPPER

    语法: UPPER(string)

    功能: 所有字母大写.(不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的).

    SQL> select upper('AaBbCcDd') upper from dual;

    UPPER

    AABBCCDD


    相关文章

      网友评论

          本文标题:Oracle 函数大全

          本文链接:https://www.haomeiwen.com/subject/runilctx.html