单行函数的分类
字符操作
函数数字
操作函数
日期操作函数
数据类型转换函数
综合数据类型
字符操作函数
大小写操作函数
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认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





