• ORACLE 常用字符函数


    ORACLE 常用字符函数

    1 ASCII(arg1)

    返回参数arg1的十进制数字表示.如果数据库设置为ASCII,则采用的是ASCII码字符.如果设置为EBCDIC,则采用的是EBCDIC字符

    select ascii('A') from dual;

    ASCII('A')
    ----------
    65

    2 CHR(arg1,[using nchar_cs])

    返回由参数arg1的代码所指定的字符.所返回的字符依赖于oracle所使用的底层字符编码设置.

    select chr(65) from dual;

    CHR(65)
    -------
    A

    3 CONCAT(arg1,arg2)

    返回arg1与arg2的拼接结果.等同于arg1||arg2

    select concat('ABC','DEF') from dual;

    CONCAT('ABC','DEF')
    -------------------
    ABCDEF

    4 INITCAP(arg1)

    将参数arg1转换为每个单词的首字母大写的格式.

    select INITCAP('hello world') from dual;

    INITCAP('HELLOWORLD')
    ---------------------
    Hello World

    5 INSTR(arg1,to_find,pos,occurrence)

    在arg1中查找to_find子字符串,并返回一个整数表示它出现的位置.参数pos指定在参数arg1中开始搜索的位置.如果pos为正,则在该数字指定的位置开始搜索.如果pos为负,则在该数字指定的位置开始搜索,但位置指定是从字符串结尾处开始的.并且反向搜索.参数occurrence指定搜索第几次出现的了字符串.

    --从左面第1个字符开始搜索,第一次出现ABC的位置
    select instr('HABCHABC','ABC',1,1) from dual;

    INSTR('HABCHABC','ABC',1,1)
    ---------------------------
    2

    --从左面第3个字符开始搜索,第一次出现ABC的位置
    select instr('HABCHABC','ABC',3,1) from dual;

    INSTR('HABCHABC','ABC',3,1)
    ---------------------------
    6

    ----从左面第1个字符开始搜索,第二次出现ABC的位置
    select instr('HABCHABC','ABC',1,2) from dual;
    INSTR('HABCHABC','ABC',1,2)
    ---------------------------

    6

    --从右面第1个字符开始搜索,第二次出现ABC的位置
    select instr('HABCHABC','ABC',-1,2) from dual;
    INSTR('HABCHABC','ABC',-1,2)
    ----------------------------
    2

    6 LENGTH(arg1)

    返回参数arg1的长度.arg1可以是char,varchar2,nchar,nvarchar2,clob或nclob

    select length('abcdefg') from dual;

    LENGTH('ABCDEFG')
    -----------------
    7

    7 lower(arg1)

    返回参数arg1的小写形式.

    select lower('AbCdEfG') from dual;

    LOWER('ABCDEFG')
    ----------------
    Abcdefg

    8 LPAD(arg1,n,arg3)

    返回在arg1左边填充若干个arg3组成长度为n新字符串.如果n小于arg1的长度,则变为 将arg1从左侧截取N字符.

    --在ABC前面连续添加Ha直到总长度为10
    select lpad('ABC',10,'Ha') from dual;
    LPAD('ABC',10,'HA')
    -------------------
    HaHaHaHABC

    select lpad('ABC',2,'Ha') from dual;

    LPAD('ABC',2,'HA')
    ------------------
    AB

    9 LTRIM(arg1,arg2)

    在arg1左面删除连续出现的arg2.不指定arg2则默认删除空格.

    select ltrim('AAAASA','A') from dual;

    LTRIM('AAAASA','A')
    -------------------
    SA

    select ltrim(' AAA') from dual;

    LTRIM('AAA')
    ------------
    AAA

    10 NLS_INITCAP(arg1,[‘NLS_SORT=x’])

    功能与INITCAP相同,只是可以处理多字符编码的字符.

    11 NLS_LOWER(arg1,[‘NLS_SORT=x’])

    功能与LOWER相同, 只是可以处理多字符编码的字符.

    12 NLSSORT(arg1,[‘NLS_SORT=x’])


    允许根据数据库所使用的语言的特定语言要求,对结果进行排序.

    13 NSL_UPPER(arg1,[‘NLS_SORT=x’])

    与upper功能相同,但是可以处理多字节编码的字符.

    14 REGEXP_INSTR(source,regex,[pos],[occurrence],[return_option],[match])


    REGEXP_INSTR是一个高版本的INSTR函数. REGEXP_INSTR允许使用与POSIX兼容的正则表达式(POSIX表示可移植的UNIX操作系统接口)搜索字符串.该函数返回一个表示在匹配字符串中位置的整数.如果参数source为LOB类型,则该函数返回一个CLOB.
    各参数的说明:
    Source---要搜索的源字符串
    Regex----所使用的与POSIX兼容的正则表达式.
    Pos(可选的)-----描述在字符串中开始搜索的位置的整数.默认值为1,表示从字符串第1个字符开始搜索.
    Occurrence(可选的)-----描述执行多少次替换的整数.默认值为0.
    Return_options(可选的)----描述匹配字符串的位置的整数.默认值为0,表示让oracle返回匹配字符串的首字母的位置.也可以指定1,让oracel返回匹配字符串之后第1个字母的位置.
    Match(可选的)----允许修改正则表达式引擎的默认行为的字符串.有效的字符串是i表示非大小写敏感的匹配;c,表示大小写敏感的匹配;n,它允许句号(.)运算符与换行符匹配;以及m,它将源字符串当作多行处理.

    select REGEXP_INSTR('ABC123ABC','[0-9]A') from dual;

    REGEXP_INSTR('ABC123ABC','[0-9
    ------------------------------
    6

    15 REGEXP_REPLACE(source,regex,replace,[pos],[occurrence],[match])

    REGEXP_REPLACE是replace函数的一个高版本. REGEXP_REPLACE允许使用与POSIX兼容的正则表达式搜索源字符串.该函数返回一个varchar2类型的字符串,其中每个匹配的regex被replace参数替换.如果source参数为CLOB类型,则该函数返回CLOB类型.
    参数source和replace可以是char,varchar2,nchar,nvarchar2,clob或nclob数据类型,而参数regex可以是char,varchar2,nchar或可包含多达512字节的数据的nvarchar2数据类型.只有oracle10g 才提供该函数
    该函数包含以下参数:
    Source ----要搜索的源字符串
    Regex----所使用的与posix兼容的正则表达式
    Replace----当正则表达式匹配时所使用的替换字符串
    Pos(可选的)----描述在字符串中开始搜索的位置的整数.默认值为1,表示从字符串第一个字符开始搜索.
    Occurrence(可选的)----描述执行多少次替换的数据.默认为0,表示执行所有匹配的替换.
    Match(可选的)---- 允许修改正则表达式引擎的默认行为的字符串.有效的字符串是i表示非大小写敏感的匹配;c,表示大小写敏感的匹配;n,它允许句号(.)运算符与换行符匹配;以及m,它将源字符串当作多行处理.

    select REGEXP_REPLACE('abc123abc123','[0-9]','#') from dual;

    REGEXP_REPLACE('ABC123ABC123',
    ------------------------------
    abc###abc###

    16 EGEXP_SUBSTR(source,regex,[pos],[occurrence],[match])

    REGEXP_SUBSTR是substr 函数的一个高版本. REGEXP_SUBSTR允许使用与posix兼容的正则表达式搜索源字符串.
    该函数包含以下参数:
    Source ----要搜索的源字符串
    Regex----所使用的与posix兼容的正则表达式
    Pos(可选的)----描述在字符串中开始搜索的位置的整数.默认值为1,表示从字符串第一个字符开始搜索.
    Occurrence(可选的)----描述执行多少次替换的数据.默认为0,表示执行所有匹配的替换.
    Match(可选的)---- 允许修改正则表达式引擎的默认行为的字符串.有效的字符串是i表示非大小写敏感的匹配;c,表示大小写敏感的匹配;n,它允许句号(.)运算符与换行符匹配;以及m,它将源字符串当作多行处理.

    select REGEXP_substr('abc133abc456','([0-9]{3})abc([0-9]{3})') from dual;

    REGEXP_SUBSTR('ABC133ABC456','
    ------------------------------
    133abc456

    17 REPLACE(arg1,search,replace)

    该函数用replace 参数替换出现的所有search参数.

    select replace('abcdabce','abc','x') from dual;

    REPLACE('ABCDABCE','ABC','X')
    -----------------------------
    Xdxe


    18 RPAD(arg1,n,arg3)


    在字符串arg1右边连续重复填充arg3直到填充后的字符串总长度到达n为止.

    select rpad('thr',5,'ee') from dual;

    RPAD('THR',5,'EE')
    ------------------
    Three

    如果n的值小于arg1的长度,则从右面截取,相当于substr ()函数进行截取

    select rpad('hello',2,'xxx') as rpad,substr('hello',1,2) as substr from dual;

    RPAD SUBSTR
    ---- ------
    he he

    19 RTRIM(arg1,arg2)

    从arg1中删除右侧连续出现的arg2.不指定arg2则默认删除空格.

    select rtrim('abcdabcabc','abc') from dual;

    RTRIM('ABCDABCABC','ABC')
    -------------------------
    Abcd

    select rtrim('six space ')||';' from dual;

    RTRIM('SIXSPACE')||';'
    ----------------------
    six space;

    20 SOUNDEX(arg1)

    返回arg1的语音学表示.通常用于在某个表中执行搜索,以便查找那些相互之间发音相同但拼写不同的单词.
    select soundex('too'),soundex('two') from dual;

    SOUNDEX('TOO') SOUNDEX('TWO')
    -------------- --------------
    T000 T000

    21.SUBSTR(arg1,pos.len)

    从arg1中指定的位置pos开始向右侧截取指定长度len的子字符串.如果pos为正则从字符串arg1左侧开始计数,如果为负则从字符串右侧开始计数.
    如果未指定len,则返回至该字符串从位置pos开始到串尾的子串.

    SQL> --从左侧第3位开始向后截取5个字符.
    SQL> select substr('1234567890',3,5) from dual;

    SUBSTR('1234567890',3,5)
    ------------------------
    34567

    --从右侧第3位开始向后截取5个字符.
    SQL> select substr('1234567890',-3,5) from dual;

    SUBSTR('1234567890',-3,5)
    -------------------------
    890

    --从左侧第3位开始向后截取到字符串尾.
    select substr('1234567890',3) from dual;

    SUBSTR('1234567890',3)
    ----------------------
    34567890

    22 TRANSLATE(arg1,match,replace)

    类似于replace函数.差别在于,translate允许一次执行多个字符替换(但只是单个字符的替换).

    --将*R替换成#@
    select replace('PI*R*2','*R','#@') from dual;

    REPLACE('PI*R*2','*R','#')
    --------------------------
    PI#*2

    --将*替换成#,同时R替换成@
    select TRANSLATE('PI*R*2','*R','#@') from dual;

    TRANSLATE('PI*R*2','*R','#@')
    -----------------------------
    PI#@#2

    23 TREAT(expr as [REF] schema.type)

    允许改变expr参数的声明类型.当拥有一种更适合于数据的子类型,并且希望转换为该父类型为更适合的子类型时,该函数可谓得心应手.如果将要引用的REF类型,此时才会使用到可选的REF关键字.

    这个函数是从书上抄下来的,暂时没有研究是什么意思,以后再补上。

    24 TRIM([LEADING][TRAILING][BOTH] char FROM source)

    Trim返回varchar2 类型的字符串,其中前导的、尾随的字符char被从source中剪裁。如果指定leading 则与char匹配的前导字符被剪裁。如果指定trailing,则与char匹配的尾随字符被剪裁。指定both,则字符串的首尾都被剪裁。如果没有给出char则默认为空白。如果只指定source参数,则将从source参数中删除尾随和前导的空白。

    --截断串首连续出现的字符1
    SELECT TRIM(LEADING '1' FROM '1122332211') FROM DUAL;

    TRIM(LEADING'1'FROM'1122332211
    ------------------------------
    22332211

    --截断串尾连续出现的字符1
    SELECT TRIM(TRAILING '1' FROM '1122332211') FROM DUAL;

    TRIM(TRAILING'1'FROM'112233221
    ------------------------------
    11223322

    --截断串首和串尾连续出现的字符1
    SELECT TRIM(BOTH '1' FROM '1122332211') FROM DUAL;

    TRIM(BOTH'1'FROM'1122332211')
    -----------------------------
    223322



    --不指定[LEADING][TRAILING][BOTH]则默认为BOTH
    SELECT TRIM('1' FROM '1122332211') FROM DUAL;

    TRIM('1'FROM'1122332211')
    -------------------------
    223322

    --只指定参数source则默认为TRIM(BOTH ' ' from source)
    SELECT TRIM(BOTH ' ' from ' ! ') as BOTH,TRIM(' ! ') as source FROM DUAL;

    BOTH SOURCE
    ---- ------
    ! !

  • 相关阅读:
    《2020秋招》总结一下自己的秋招过程以及收获
    2020届京东秋招正式批一面记录-Java开发-2019.08.31
    面试常见二叉树算法题集锦-Java实现
    Java并发编程知识点总结Volatile、Synchronized、Lock实现原理
    面试中常用的六种排序算法及其Java实现
    介绍一款自己实现的rabbit轻量级组件和使用方法
    CDH版本Hbase二级索引方案Solr key value index
    会话cookie中缺少HttpOnly属性 解决
    How to visualize feature map in Tensorboard?
    How to pad an image in numpy?
  • 原文地址:https://www.cnblogs.com/champaign/p/5882023.html
Copyright © 2020-2023  润新知