暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

操作字符串的函数

Oracle微学堂 2019-03-07
978

单行函数的分类

字符操作

函数数字

操作函数

日期操作函数

数据类型转换函数

综合数据类型

字符操作函数

大小写操作函数

Lower,upper,initcap

字符串操作函数

Concat,length,substr,instr,trim,replace,lpad,rpad

实验:操作字符串的函数

该实验的目的是掌握常用的字符串操作的函数.

字符串的大小写操作

Select lower(ename),upper(ename),initcap(ename) from emp;

LOWER(ENAM UPPER(ENAM INITCAP(EN

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

smith SMITH Smith

allen ALLEN Allen

ward WARD Ward

jones JONES Jones

martin MARTIN Martin

blake BLAKE Blake

clark CLARK Clark

king KING King

turner TURNER Turner

james JAMES James

ford FORD Ford

miller MILLER Miller

小写 大写 首字母大写

Select lower('mf TR'), upper('mf TR'), initcap('mf TR') from dual;

LOWER('MFTR') UPPER('MFTR') INITCAP('MFTR')

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

mf tr MF TR Mf Tr

Dual 是虚表,让我们用表的形式来访问函数的值。

其它字符串操作函数

select ename,job,concat(ename,job) from emp;

ENAME JOB CONCAT(ENAME,JOB)

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

SMITH CLERK SMITHCLERK

ALLEN SALESMAN ALLENSALESMAN

WARD SALESMAN WARDSALESMAN

JONES MANAGER JONESMANAGER

MARTIN SALESMAN MARTINSALESMAN

BLAKE MANAGER BLAKEMANAGER

CLARK MANAGER CLARKMANAGER

KING PRESIDENT KINGPRESIDENT

TURNER SALESMAN TURNERSALESMAN

JAMES CLERK JAMESCLERK

FORD ANALYST FORDANALYST

MILLER CLERK MILLERCLERK

将两个字符连接到一起


下面三句话是求字符串的长度,字符串要单引。

select length('张三') from dual;--按照字

select lengthb('张三') from dual;--按字节

select lengthc('张三') from dual;--unicode 的长度

SQL> select length('张三') from dual;

LENGTH('张三')

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

 2

SQL> select lengthb('张三') from dual;

LENGTHB('张三')

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

 4


SQL> select lengthc('张三') from dual;

LENGTHC('ÕÅÈý')

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

 2

select ename,substr(ename,1,1) "first",substr(ename,-1) "last"from emp;

ENAME first last

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

SMITH S H

ALLEN A N

WARD W D

JONES J S

MARTIN M N

BLAKE B E

CLARK C K

KING K G

TURNER T R

JAMES J S

FORD F D

MILLER M R

substr(字符串,m,n),m 是从第几个字符开始,如果为负的意思是从后边的第几个开始。N 是数多少个,如果不说就是一直到字符串的结尾。


select ename,instr(ename,'A') "A 在第几位" from emp;

ENAME A 在第几位

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

SMITH 0

ALLEN 1

WARD 2

JONES 0

MARTIN 2

BLAKE 3

CLARK 3

KING 0

TURNER 0

JAMES 2

FORD 0

MILLER 0

求子串在父串中的位置,0 表示没有在父串中找到该子串。


截断字符串和添加字符串的函数

SQL> select trim(leading 'a' from 'aaaaabababaaaaa') from dual;

TRIM(LEADING'A'FROM'AAAAABABAB

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

bababaaaaa

截掉连续的前置的 a

SQL> select trim(trailing 'a' from 'aaaaabababaaaaa') from dual;

TRIM(TRAILING'A'FROM'AAAAABABA

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

aaaaababab

截掉连续的后置的 a

SQL> select trim(both 'a' from 'aaaaabababaaaaa') from dual;

TRIM(BOTH'A'FROM'AAAAABABABAAA

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

babab

截掉连续的前置和后置的 a

SQL> select trim('a' from 'aaaaabababaaaaa') from dual;

TRIM('A'FROM'AAAAABABABAAAAA')

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

Babab

如果不说明是前置还是后置就是 both 全截断。

Trim 函数是截掉头或者尾连续的字符,一般我们的用途是去掉空格。


SQL> select lpad(ename,20,'-') ename,rpad(ename,20,'-') ename from emp;

ENAME ENAME

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

---------------SMITH SMITH---------------

---------------ALLEN ALLEN---------------

----------------WARD WARD----------------

---------------JONES JONES---------------

--------------MARTIN MARTIN--------------

---------------BLAKE BLAKE---------------

---------------CLARK CLARK---------------

----------------KING KING----------------

--------------TURNER TURNER--------------

---------------JAMES JAMES---------------

----------------FORD FORD----------------

--------------MILLER MILLER--------------

左铺垫和右铺垫,20 是总共铺垫到多少位,-是要铺垫的字符串。

SQL> select lpad(sal,2,' ') ename,rpad(sal,10,' ') ename,sal from emp;

别名 别名 ENAME 位数不足 ENAME 左对齐 SAL

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

80 800 800

16 1600 1600

12 1250 1250

29 2975 2975

12 1250 1250

28 2850 2850

24 2450 2450

50 5000 5000

15 1500 1500

95 950 950

30 3000 3000

13 1300 1300

Lpad 左铺垫,rpad 右铺垫,一般的用途是美化输出的结果。

如果位数不足,按照截取后的结果显示,不报错。

SELECT REPLACE('JACK and JUE','J','BL') FROM DUAL;

BLACK and BLUE

将字符串中的 J 全部替换位 BL

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!



最后修改时间:2019-12-20 16:31:18
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论