数据库Oracle字符处理函数

本文深入探讨了SQL中字符处理函数的实际应用,包括CONCAT、SUBSTR、LENGTH、INSTR、LPAD、RPAD和TRIM等函数的使用技巧,并通过具体实例展示了如何利用这些函数进行数据处理和信息提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习字符处理函数(数据库表都是从1开始),我们用到一张“伪表” dual:

dual dual 是一张只有一个字段,一行记录的表。dual 表也称之为'伪表',因为他不存储主题数据。如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过 select 完成时,就要借助 dual 表来满足结构化查询语言的格式。

 

 

CONCAT(arg1,arg2):连接值在一起 (CONCAT 函数有两个输入参数)

arg1字符串类型。字符拼接的值。

arg2字符串类型。字符拼接的值。

SQL> select concat('yxf','wj') from dual;

 

 

SUBSTR(arg1,arg2,arg3):截取子串(如果没有arg3,则是默认从arg2截取到末尾)。

arg1字符串类型。原字符串,

arg2整数类型。开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则表示倒是第二位以此类推)

arg3整数类型。截取个数。

SQL> select substr('yxfbjsxt',1,5) from dual;

SQL> select substr('yxfbjsxt',-1,5) from dual;

SQL> select substr('yxfbjsxt',1) from dual;

 

 

LENGTH(arg1):以数字值显示一个字符串的长度。

arg1字符串类型。计算长度的字符串。

SQL> select length('yxfbjsxt') from dual;

 

 

INSTR(arg1,arg2):找到一个给定字符的数字位置(没找到则返回0)。

arg1字符串类型。原字符串。

arg2字符串类型。查找内容。

SQL> select instr('yxfbjsxt','wj') from dual;

SQL> select instr('yxfbjsxt','sxt') from dual;

 

 

INSTR(arg1,arg2,arg3,arg4):指定查找位置以及出现的次数。

arg1字符串类型。原字符串。

arg2字符串类型。查找内容。

arg3整数类型。开始位置。

arg4整数类型。第几次出现。

SQL> select instr('yxfbjsxt','x',1,2) from dual;

 

 

LPAD(arg1,arg2,arg3):用给定的字符左填充字符串到给定的长度。

arg1字符串类型。原字符串。

arg2整数类型。总长度。

arg3字符串类型。填充的子字符串。

SQL> select lpad('yxfbjsxt',9,'250') from dual;

SQL> select lpad('yxfbjsxt',20,'250') from dual;

 

 

RPAD(arg1,arg2,arg3):用给定的字符右填充字符串到给定的长度。

arg1字符串类型。原字符串。

arg2整数类型。总长度。

arg3字符串类型。填充的子字符串。

SQL> select rpad('yxfbjsxt',20,'250') from dual;

 

TRIM(arg1):从一个字符串中去除头(leading)或尾(trailing)或头尾两侧(both)的字符 (默认为头尾两侧) 如果 trim_character trim_source 是一个文字字符,必须放在单引号中。

arg1 需要操作的字符串FROM 为关键字。

格式 1:需要去掉的内容 FROM 原字符串

SQL> select trim('h' from 'hellhowdh') from dual;

格式 2leading|trailing|both 需要去掉的内容 FROM 原字符串(both的用法和上面的用法是一样的,上面就是默认波让后用                   法,去除头尾。)。

去头:

SQL> select trim(leading 'h' from 'hellhowdh') from dual;

去尾:

SQL> select trim(trailing 'h' from 'hellhowdh') from dual;

 

 

 

实例1:显示所有工作岗位名称从第 4 个字符位置开始包含字符串 REP 的雇员的信息,将雇员的姓和名连接显示在一起,还显                 示雇员名的长度,以及名字中字母 a 的位置。

SQL> select concat(first_name,Last_name),length(last_name),instr(last_name,'a') from employees where substr(job_id,4)='REP';

解析:先看题目中的需要显示的信息:1.雇员的姓和名连接显示在一起   2.显示雇员名的长度 3.名字中字母 a 的位置 这三个是我们需要提取的显示信息。然后确定是从哪张表查,最后用where子句去完成的查询要求:工作岗位名称从第 4 个字符位置开始包含字符串 REP 的雇员的信息。

 

 

实例2:显示名字是以 n 结束的雇员的数据,将雇员的姓和名连接显示在一起,还显示雇员名的长度,以及名字中字母 a 的位                   置。(以n结尾,有俩种方法去查找。1.用模糊查询 ‘%n’,2.用字符截取函数,只截取最后一个字母                                                   substr(last_name,-1)).

SQL> select concat(first_name,last_name) "name",length(concat(first_name,last_name)),instr(concat(first_name,last_name),'a') from employees where last_name like '%n';
SQL> select concat(first_name,last_name) "姓名:",length(concat(first_name,last_name)) "姓名长度:",instr(concat(first_name,last_name),'a') "姓名中a,出现的位置:" from employees where substr(last_name,-1)='n';

解析:首先明确显示的的内容:1.雇员的姓和名连接显示在一起 2.显示雇员名的长度 3.名字中字母 a 的位置。。再用where子句去查询对雇员的要求。显示名字是以 n 结束的雇员的数据。

 

实例3:将手机号中间四位用星号代替。

select replace(PHONE_NUMBER ,substr(PHONE_NUMBER ,5,4),'****') from employees;

解析:用到了嵌套函数:代替肯定是需要用replace函数,在replace函数中嵌套一个substr截取函数。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值