
点击“蓝字”关注我们

晟数学院DBA成长日记--SQL篇
单行函数

字符函数
UPPER(列|字符串):将字符串的内容全部大写。
LOWER(列|字符串):将字符串的内容全部小写。
INITCAP(列|字符串):将字符串的开头首字母大写。
REPLACE(列|字符串,新的字符串):使用新的字符串替换旧的字符串。
LENGTH(列|字符串):求出字符串长度。
SUBSTR(列|字符串,开始点[,长度]):字符串截取。
ASCII(字符):返回与指定字符对应的十进制数字。
INSTR:查找一个子字符串是否在指定的位置上出现。
(1)大小写转换
SCOTT@SDEDU>
select upper('lxxer'),lower('SANDATA') from dual;
UPPER(' LOWER
------- -----
LXXER sandata
说明:dual是什么表?可以将dual理解为一张虚拟表,Oracle中默认提供了一张dual。
(2)查询出雇员姓名是“smith”的完整信息,但是由于失误,没有考虑到数据的大小写问题,此时可以使用UPPER()函数将全部内容变为大写
SCOTT@SDEDU>
select * from emp where ename=UPPER('smith');
EMPNO ENAME JOB MGR HIREDATE
SAL COMM DEPTNO
----------- ------------ ---------------- ---------- --------------------
----------- ------------ ----------------
7369 SMITH CLERK 7902 17-DEC-80
800 20
(3)查询所有雇员的姓名,要求将每个雇员的姓名以首字母大写的形式出现
SCOTT@SDEDU> select ename oname,initcap(ename) uppername from emp;
ONAME UPPERNAME
------------ ----------------------
SMITH Smith
ALLEN Allen
WARD Ward
JONES Jones
MARTIN Martin
BLAKE Blake
CLARK Clark
SCOTT Scott
KING King
TURNER Turner
ADAMS Adams
JAMES James
FORD Ford
MILLER Miller
14 rows selected.
(4)现在要求查询所有雇员的姓名,但是要求将雇员姓名中所有的字母“A”替换位“_”
SCOTT@SDEDU> select ename,replace(ename,'A','_') from emp;
ENAME REPLACE(EN
---------- -------------------
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.
(5)查询出姓名长度是5的所有雇员信息
SCOTT@SDEDU> select ename from emp where length(ename)=5;
ENAME
----------
SMITH
ALLEN
JONES
BLAKE
CLARK
SCOTT
ADAMS
JAMES
8 rows selected.
(6)查询所有雇员的姓名,但是不显示每个雇员姓名的前三个字母
SCOTT@SDEDU> select substr(ename,4) from emp;
SUBSTR(ENAME,4)
-------------------
TH
EN
D
ES
TIN
KE
RK
TT
G
NER
MS
ES
D
LER
14 rows selected.
(7)要求显示每个雇员姓名及其姓名的后三个字母
解决方法一:
SCOTT@SDEDU>
select ename,substr(ename,length(ename)-2) from emp;
ENAME SUBSTR(ENAME,LENGTH(ENAME)-2)
------------ ----------------------------------------------------
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()函数中设置负数截取
SCOTT@SDEDU> 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.
(8)返回指定字符的ASCII码,比较的是第一个字符
SCOTT@SDEDU> select ascii('lds'),ascii('L') from dual;
ASCII('LDS') ASCII('L')
---------------- ----------
108 76
(9)查找一个子字符串是否在指定的位置上出现
SCOTT@SDEDU> select instr('VDATA oracle','VDATA')
2 ,instr ('VDATA oracle','oracle') from dual;
INSTR('VDATAORACLE','VDATA') INSTR('VDATAORACLE','ORACLE')
---------------------------- -----------------------------
1 7
推荐阅读
10-13 特稿

10-13 特稿

10-13 特稿







