Oracle笔记 之 字符串函数

本文详细介绍了Oracle数据库中常用的字符串操作函数,包括substr()、instr()、replace()、translate()、ascii()、chr()、length()、initcap()、lower()、upper()、lpad()、rpad()、regexp_substr()等。这些函数涵盖了字符串截取、查找、替换、转译、长度计算、大小写转换、填充以及正则表达式操作等方面,是数据库查询和数据处理的重要工具。

字符串截取

格式

格式1:
substr(string,start_pos,length)
格式2:
substr(string,start_pos)

说明

从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指定位置start_pos截取字符串string。
start_pos等于0或者1均从左边第一位开始截取。
如果start_pos为负整数,则从右截取字符串。

示例

–abc abc cdef def
select substr(‘abcdef’, 0, 3),
substr(‘abcdef’, 1, 3),
substr(‘abcdef’, 3),
substr(‘abcdef’, -3)
from dual;

查找子串

格式

instr(string,sub_string,start_pos,times)

说明

从字符串string的指定位置start_pos开始查询子串sub_string第times次出现的位置。
start_pos,times为可选参数,默认值均为1

示例

–7
select instr(‘abcfdgfdhd’, ‘fd’, 1, 2) from dual;

字符串连接

–Hello world
select ‘Hello’ || ’ world’ from dual;

去掉字符串首尾空格

ltrim 去字符串首部空格
rtrim 去字符串尾部空格
trim 去字符串首尾空格

– a b c a b c a b c
select ltrim(’ a b c ‘) s1, rtrim(’ a b c ‘) s2, trim(’ a b c ') s3
from dual;

去掉前导和后缀

与trim类似,去掉前导使用关键字leading,去掉后缀使用关键字trailing,都去除不实用关键字
–abc111 111abc abc
select trim(leading ‘1’ from ‘111abc111’),
trim(trailing ‘1’ from ‘111abc111’),
trim(‘1’ from ‘111abc111’)
from dual;

字符串替换

格式

replace(string,sub_string1,sub_string2)

说明

用字符串sub_string2替代string中的sub_string1,如果不指定sub_string2则删除string中的sub_string1

示例

–axyc
select replace(‘abc’, ‘b’, ‘xy’) from dual;
–ac
select replace(‘abc’, ‘b’) from dual;

字符串转译

格式

translate(string,serial1,serial2)

说明

用序列serial2中的字符一一替换serial1中的字符,如果不指定则删除
注意:序列serial1和serial2左对齐一一对译

示例

–cba
select translate(‘abc’, ‘ac’, ‘ca’) from dual; – x是1位

返回字符串首字母的ascii值

–97 45499 45489

select ascii(‘a’), ascii(‘被拒’), ascii(‘北京’) from dual;

返回ascii值对应的字母

–a
select chr(97) from dual;

计算字符串长度

注意在Oracle现有版本中一个中文字的长度为1
–6 2
select length(‘abcdef’), length(‘北京’) from dual;

字符大小写切换

initcap 首字母大写
lower 转小写
upper 转大写

注意:只争对英文字母,对汉字无效

示例

–背景 abccd DEF Efg

select lower(‘背景’), lower(‘aBCcd’), upper(‘def’), initcap(‘efg’)
from dual;

字符串填充

用于控制输出格式

lpad 左添充

lpad(string,length,pad_char)
string为待优化输出格式字符串,length为输出字符串总长度,pad_char为填充字符串
如果length小于string的长度,自动截取string到length位

rpad 右填充

rpad(string,length,pad_char)

示例

–funccccc ====func func----

select lpad(‘funccccccccccccccccccc’, 8, ‘=’),
lpad(‘func’, 8, ‘=’),
rpad(‘func’, 8, ‘-’)
from dual;

通过正则表达式分割字符串

格式

regexp_substr(String, pattern, position, occurrence, modifier)

说明

string:需要进行正则处理的字符串
pattern:进行匹配的正则表达式
position:起始位置,从字符串的第几个字符开始正则表达式匹配,默认为1
occurrence:获取第几个分割出来的组,分割后最初的字符串会按分割的顺序排列成组,默认为1
modifier:模式–‘i’不区分大小写进行检索;‘c’区分大小写进行检索,默认为’c’

示例

–d D D 5

select regexp_substr(‘daefaDH5AF12dafe’, ‘[a-z]’),
regexp_substr(‘daefaDH5AF12dafe’, ‘[^a-z]’),
regexp_substr(‘daefaDH5AF12dafe’, ‘[^a-z]’, 1, 1, ‘c’),
regexp_substr(‘daefaDH5AF12dafe’, ‘[^a-z]’, 1, 1, ‘i’)
from dual;
正则表达式

查看包含特定字符串纪录

–X
select * from dual where ‘hello’ like ‘%ll%’;
–X
select * from dual where instr(‘Hello’, ‘ll’) > 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值