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

SQL语句破冰 之 字符函数

晟数学院 2021-04-16
344

点击“蓝字”关注我们


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

单行函数

    什么是单行函数?在数据库中完成特定功能的操作都是通过函数的方式体现的,在函数中操作数据对象,每次对一行进行操作,每行返回一个结果称作单行函数。

语法: 

funcation_name(列|表达式[,参数1,参数2])

单行函数可以接收一个数据表中的操作列,也可以接受一个具体的计算结果。

种类:

字符函数:接收数据返回具体的字符信息。

数值函数:对数字进行处理,例如四舍五入。

日期函数:直接对日期进行相关的操作。

转换函数:日期、字符、数字之间可以完成互相转换功能。通用函数:Oracle自己提供的有特色的函数。

字符函数

  • 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             

推荐阅读

SQL语句破冰 之 范围模糊查询与结果排序

10-13 特稿

SQL语句破冰 之 限定查询

10-13 特稿

SQL语句破冰 之 简单查询

10-13 特稿

记得长按上方二维码关注我们~
文章转载自晟数学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论