oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

ORACLE单行函数与多行函数之二:字符函数示例

来源:网络整理  作者:网络  发布时间:2020-12-09 12:08
1.大小写转换 initcap(char) 把每个字符串的首字符换成大写 lower(char) 整个字符串转换成小写 upper(char) 整个字符串转换成...
---------- --------- ---------- -------------------
------------------------ ------------------ ----------------
  LENGTH('白不') LENGTH('BAI')   LENGTHB('白不') LENGTHB('BAI')   LENGTHC('白不') LENGTHC('BAI')
TRIM(LEADING'*'FROM'**ABC%%') TRIM(TRAILING'%'FROM'**ABC%%') TRIM(BOTH'%'FROM'%%ABC%%') TRIM('%'FROM'%%ABC%%')
ENAME      JOB       ENAME      CONCAT(ENAME,JOB)
abc%%                         **abc                          abc                        abc                  

SQL> select ltrim('*a%%abc**a**','%'), ltrim('%%abc**a**','%'),rtrim('*a%%abc**a**','*'),rtrim('%%abc**a','*') from dual;

BYS@bys1>select ename,length(ename),sal,length(sal) from emp where rownum<5;
SMITH      CLERK     SMITH      SMITHCLERK
------------------------- ----------------------- ------------------------- ---------------------
i love you

LENGTH(LTRIM('ABC')) LENGTH(RTRIM('ABC')) LENGTH(TRIM('ABC'))
8.instr:求子串在父串中的位置,0表示没有在父串中找到该子串。

如果一个字符串中有多个与子串对应的字符,只显示第一个查询到的字符。
smith      SMITH      Smith

SQL> select length('白不'),length('bai'), lengthb('白不'),lengthb('bai'),lengthc('白不'),lengthc('bai')  from dual;
2.字符连接CONCAT和||

CONCAT (char1, char2)    连接char1和char2,注意:CONCAT只能连接两个字符串,连接三个将报错。

ALLEN      SALESMAN  ALLEN      mingzi ALLENALLEN  gongzuo  SALESMAN

BYS@bys1>select ename,job,ename,concat(ename,job,ename) from emp where rownum<3;
REPLACE('H
SMITH      CLERK     SMITH      SMITHSMITHCLERK
                   5                    5                   3
---------- --------- ---------- -----------------------------------------------

lengthb--按字节

ENAME      JOB       ENAME      'MINGZI'||ENAME||ENAME||'GONGZUO'||JOB
*a%%abc**a**              abc**a**                *a%%abc**a                %%abc**a
ENAME      JOB       ENAME      ENAME||ENAME||JOB
allen      ALLEN      Allen

ALLEN                  5       1600           4
LTRIM('*A%%ABC**A**','%') LTRIM('%%ABC**A**','%') RTRIM('*A%%ABC**A**','*') RTRIM('%%ABC**A','*')
ALLEN      SALESMAN  ALLEN      ALLENSALESMAN
----------------------------- ------------------------------ -------------------------- ----------------------
ORA-00909: invalid number of arguments

SQL> select length(ltrim(' abc  ')),length(rtrim('  abc  ')),length(trim('  abc  ')) from dual;
SMITH      CLERK     SMITH      mingzi SMITHSMITH  gongzuo CLERK
lower(char) 整个字符串转换成小写

upper(char) 整个字符串转换成大写

6.删除左/右边的指定字符trim, LTRIM和RTRIM

从下面语句可以看出,只能删除最左或最或边同指定字符相同的字符,如有多个连续的同指定一样的字符,可以连续删除。

BYS@bys1>select ename,job,ename,ename||ename||job from emp where rownum<3;
ERROR at line 1:
**abc abc%%

BYS@bys1>select ename,job,ename,concat(ename,job) from emp where rownum<3;
SMITH                  5        800           3
------------------------- ----------------------- --------------------------
3.求字符串的长度;length  字符串要单引

length--按照字,可以求字符串长度,也可以求数字的长度

SUBSTR('15912345678',4,8) SUBSTR('15912345678',4) SUBSTR('15912345678',-8,8)
select ename,job,ename,concat(ename,job,ename) from emp where rownum<3
---------- ---------- ----------
不指定字符时,默认过滤的为空格符
BYS@bys1>select substr('15912345678',4,8),substr('15912345678',4),substr('15912345678',-8,8) from dual;
LOWER(ENAM UPPER(ENAM INITCAP(EN

initcap(char) 把每个字符串的首字符换成大写

----- -----
SQL>select instr('abcdabc','a','2'),instr('baabc','a'),instr('bbc','a') from dual;
-------------------- -------------------- -------------------
ENAME      LENGTH(ENAME)        SAL LENGTH(SAL)
LPAD( RPAD(
5.在右/右边填充字符 LPAD和RPAD

BYS@bys1>select lpad('abc',5,'*'),rpad('abc',5,'%') from dual;
12345678                  12345678                12345678

WARD                   4       1250           4
ALLEN      SALESMAN  ALLEN      ALLENALLENSALESMAN

INSTR('ABCDABC','A','2') INSTR('BAABC','A') INSTR('BBC','A')
                       *
                       5                  2                0

----------

||连接符,一大优势是可以在连续符中间添加指定的字符

7.替换 REPLACE('string','s1','s2');string希望被替换的字符或变量,s1被替换的字符串,s2要替换的字符串

BYS@bys1>select replace('he love you','he','i') from dual;
             2             3               6              3              2              3

---------- ------------- ---------- -----------
---------- --------- ---------- -----------------------------
-------------- ------------- --------------- -------------- --------------- --------------
SQL> select trim(leading '*' from '**abc%%'),trim(trailing '%' from '**abc%%'),trim(both '%' from '%%abc%%'),trim( '%'from '%%abc%%') from dual;
instr('abcdabc','a','2') 从字符串的第2个字符开始搜索符合a的字符。不指定从第几个字符开始的话,默认从第1个字符开始搜索。
JONES                  5       2975           4

从下面语句可以看出,trim是默认是同时滤过两边的字符。
4.截取,SUBSTR(string,start,count) 从start开始,截取count个。

如果不指定count,则默认截取到最后一个字符。如果start为负数,则从倒数第N个字符截取。

BYS@bys1>select ename,job,ename,'mingzi '||ename||ename||'  gongzuo  '||job from emp where rownum<3;

lengthc--unicode的长度

BYS@bys1>Select lower(ename),upper(ename),initcap(ename) from emp where rownum<3;

相关热词: oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/oracle/1803.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

ORACLE单行函数与多行函数之二:字符函数示例

2020-12-09 编辑:网络

---------- --------- ---------- -------------------
------------------------ ------------------ ----------------
  LENGTH('白不') LENGTH('BAI')   LENGTHB('白不') LENGTHB('BAI')   LENGTHC('白不') LENGTHC('BAI')
TRIM(LEADING'*'FROM'**ABC%%') TRIM(TRAILING'%'FROM'**ABC%%') TRIM(BOTH'%'FROM'%%ABC%%') TRIM('%'FROM'%%ABC%%')
ENAME      JOB       ENAME      CONCAT(ENAME,JOB)
abc%%                         **abc                          abc                        abc                  

SQL> select ltrim('*a%%abc**a**','%'), ltrim('%%abc**a**','%'),rtrim('*a%%abc**a**','*'),rtrim('%%abc**a','*') from dual;

BYS@bys1>select ename,length(ename),sal,length(sal) from emp where rownum<5;
SMITH      CLERK     SMITH      SMITHCLERK
------------------------- ----------------------- ------------------------- ---------------------
i love you

LENGTH(LTRIM('ABC')) LENGTH(RTRIM('ABC')) LENGTH(TRIM('ABC'))
8.instr:求子串在父串中的位置,0表示没有在父串中找到该子串。

如果一个字符串中有多个与子串对应的字符,只显示第一个查询到的字符。
smith      SMITH      Smith

SQL> select length('白不'),length('bai'), lengthb('白不'),lengthb('bai'),lengthc('白不'),lengthc('bai')  from dual;
2.字符连接CONCAT和||

CONCAT (char1, char2)    连接char1和char2,注意:CONCAT只能连接两个字符串,连接三个将报错。

ALLEN      SALESMAN  ALLEN      mingzi ALLENALLEN  gongzuo  SALESMAN

BYS@bys1>select ename,job,ename,concat(ename,job,ename) from emp where rownum<3;
REPLACE('H
SMITH      CLERK     SMITH      SMITHSMITHCLERK
                   5                    5                   3
---------- --------- ---------- -----------------------------------------------

lengthb--按字节

ENAME      JOB       ENAME      'MINGZI'||ENAME||ENAME||'GONGZUO'||JOB
*a%%abc**a**              abc**a**                *a%%abc**a                %%abc**a
ENAME      JOB       ENAME      ENAME||ENAME||JOB
allen      ALLEN      Allen

ALLEN                  5       1600           4
LTRIM('*A%%ABC**A**','%') LTRIM('%%ABC**A**','%') RTRIM('*A%%ABC**A**','*') RTRIM('%%ABC**A','*')
ALLEN      SALESMAN  ALLEN      ALLENSALESMAN
----------------------------- ------------------------------ -------------------------- ----------------------
ORA-00909: invalid number of arguments

SQL> select length(ltrim(' abc  ')),length(rtrim('  abc  ')),length(trim('  abc  ')) from dual;
SMITH      CLERK     SMITH      mingzi SMITHSMITH  gongzuo CLERK
lower(char) 整个字符串转换成小写

upper(char) 整个字符串转换成大写

6.删除左/右边的指定字符trim, LTRIM和RTRIM

从下面语句可以看出,只能删除最左或最或边同指定字符相同的字符,如有多个连续的同指定一样的字符,可以连续删除。

BYS@bys1>select ename,job,ename,ename||ename||job from emp where rownum<3;
ERROR at line 1:
**abc abc%%

BYS@bys1>select ename,job,ename,concat(ename,job) from emp where rownum<3;
SMITH                  5        800           3
------------------------- ----------------------- --------------------------
3.求字符串的长度;length  字符串要单引

length--按照字,可以求字符串长度,也可以求数字的长度

SUBSTR('15912345678',4,8) SUBSTR('15912345678',4) SUBSTR('15912345678',-8,8)
select ename,job,ename,concat(ename,job,ename) from emp where rownum<3
---------- ---------- ----------
不指定字符时,默认过滤的为空格符
BYS@bys1>select substr('15912345678',4,8),substr('15912345678',4),substr('15912345678',-8,8) from dual;
LOWER(ENAM UPPER(ENAM INITCAP(EN

initcap(char) 把每个字符串的首字符换成大写

----- -----
SQL>select instr('abcdabc','a','2'),instr('baabc','a'),instr('bbc','a') from dual;
-------------------- -------------------- -------------------
ENAME      LENGTH(ENAME)        SAL LENGTH(SAL)
LPAD( RPAD(
5.在右/右边填充字符 LPAD和RPAD

BYS@bys1>select lpad('abc',5,'*'),rpad('abc',5,'%') from dual;
12345678                  12345678                12345678

WARD                   4       1250           4
ALLEN      SALESMAN  ALLEN      ALLENALLENSALESMAN

INSTR('ABCDABC','A','2') INSTR('BAABC','A') INSTR('BBC','A')
                       *
                       5                  2                0

----------

||连接符,一大优势是可以在连续符中间添加指定的字符

7.替换 REPLACE('string','s1','s2');string希望被替换的字符或变量,s1被替换的字符串,s2要替换的字符串

BYS@bys1>select replace('he love you','he','i') from dual;
             2             3               6              3              2              3

---------- ------------- ---------- -----------
---------- --------- ---------- -----------------------------
-------------- ------------- --------------- -------------- --------------- --------------
SQL> select trim(leading '*' from '**abc%%'),trim(trailing '%' from '**abc%%'),trim(both '%' from '%%abc%%'),trim( '%'from '%%abc%%') from dual;
instr('abcdabc','a','2') 从字符串的第2个字符开始搜索符合a的字符。不指定从第几个字符开始的话,默认从第1个字符开始搜索。
JONES                  5       2975           4

从下面语句可以看出,trim是默认是同时滤过两边的字符。
4.截取,SUBSTR(string,start,count) 从start开始,截取count个。

如果不指定count,则默认截取到最后一个字符。如果start为负数,则从倒数第N个字符截取。

BYS@bys1>select ename,job,ename,'mingzi '||ename||ename||'  gongzuo  '||job from emp where rownum<3;

lengthc--unicode的长度

BYS@bys1>Select lower(ename),upper(ename),initcap(ename) from emp where rownum<3;

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/oracle/1803.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页