本文主要介绍的是Oracle中的单行函数的知识点。
Oracle中的单行函数有五种:字符函数、数字函数、日期函数、转换函数和通用函数。
字符函数
--观察转大写和小写的函数
SELECT UPPER('hello') FROM emp;
--结果
UPPER('HELLO')
--------------
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
14 rows selected
--上面的效果在Oracle中提供了一个叫做dual来进行验证
SELECT UPPER('hello') FROM dual;
--验证转为小写
SELECT LOWER('HELLO') FROM dual;
--结果
LOWER('HELLO')
--------------
hello
1 rows selected
--对比下面的两个句子
SELECT * FROM emp WHERE ename='&str';
SELECT * FROM emp WHERE ename=UPPER('&str');
--“&”的操作属于替代变量的内容,不作重的
--将每一个雇员的姓名的首字母变为大写
SELECT INITCAP(ename) FROM emp;
--结果
INITCAP(ENAME)
--------------
Smith
Allen
Ward
Jones
Martin
Blake
Clark
Scott
King
Turner
Adams
James
Ford
Miller
14 rows selected
--列出每个姓名的长度
SELECT ename,LENGTH(ename) FROM emp;
ENAME LENGTH(ENAME)
---------- -------------
SMITH 5
ALLEN 5
WARD 4
JONES 5
MARTIN 6
BLAKE 5
CLARK 5
SCOTT 5
KING 4
TURNER 6
ADAMS 5
JAMES 5
FORD 4
MILLER 6
14 rows selected
--用字符‘_’替换姓名中的所有的字母'A'
SELECT ename, REPLACE(ename,'A','_') FROM emp;
ENAME REPLACE(ENAME,'A','_')
---------- -----------------------
SMITH SMITH
ALLEN _LLEN
WARD W_RD
JONES JONES
MARTIN M_RTIN
BLAKE BL_KE
CLARK CL_RK
SCOTT SCOTT
KING KING
TURNER TURNER
ADAMS _D_MS
JAMES J_MES
FORD FORD
MILLER MILLER
14 rows selected
--截取姓名的第3个到最后的字符
SELECT ename,SUBSTR(ename,3) FROM emp;
--结果
ENAME SUBSTR(ENAME,3)
---------- ----------------
SMITH ITH
ALLEN LEN
WARD RD
JONES NES
MARTIN RTIN
BLAKE AKE
CLARK ARK
SCOTT OTT
KING NG
TURNER RNER
ADAMS AMS
JAMES MES
FORD RD
MILLER LLER
14 rows selected
--截取姓名的第2到5个字符
SELECT ename,SUBSTR(ename,2,5) FROM emp;
--结果
ENAME SUBSTR(ENAME,2,5)
---------- -----------------
SMITH MITH
ALLEN LLEN
WARD ARD
JONES ONES
MARTIN ARTIN
BLAKE LAKE
CLARK LARK
SCOTT COTT
KING ING
TURNER URNER
ADAMS DAMS
JAMES AMES
FORD ORD
MILLER ILLER
14 rows selected
--截取姓名的后三个字符
SELECT ename,SUBSTR(ename,-3) FROM emp;
--结果
ENAME SUBSTR(ENAME,-3)
---------- ----------------
SMITH ITH
ALLEN LEN
WARD ARD
JONES NES
MARTIN TIN
BLAKE AKE
CLARK ARK
SCOTT OTT
KING ING
TURNER NER
ADAMS AMS
JAMES MES
FORD ORD
MILLER LER
14 rows selected
面试题
请问SUBSTR()函数截取字符的时候下标是从0开始还是从1开始
--在Oracle中,SUBSTR()函数从0或1开始效果都是一样的
--SUBSTR()也可以把参数设置为负数,表示由后指定截取的开始点