[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/140865275
出自【进步*于辰的博客

先言

字符串前有一个' '(空字符),故首字母的位置是1,不是0(下文“开始位置”)。

1、单行函数

参考笔记一,P15.3、P39.1。

摘要参数说明返回值类型/返回值说明
substr(str, pos[, len])pos-开始位置,可为负值截取。截取方向始终向右
round(a, b)b-精确位数四舍五入。若b < 0,则向左精确,故round(a)等价于round(a, 0)
upper(str)转大写
lower(str)转小写
initcap(str)首字母大写
length(str)返回长度
concat(a, b)拼接,类似||
trunc(a, b)b-精确位数数值取整(以10为整)
sysdate获取系统时间
instr(str1, str2[, pos][, n])str2-查找字符,pos-开始位置,n-第几个位置查找,找不到返回0。其中,instr(str1, str2)等价于instr(str1, str2, 1, 1)
lpad/rpad(str1, len, str2)左 / 右填充。表示将str1str2向左 / 向右填充成长度为len的字符串
replace(str1, str2, str3)替换。表示将str1中的str2str3替换
trim(str)去除前后空格
trim(leading/trailing/both/无 a from b)去除 b 中开头 / 结尾 / 开头和结尾 / 开头以及结尾的 a
mod(a, b)等同于a%b,余数符号跟 a

1.1 lpad/rpad(str1, n, str2)

示例。

select lpad(rpad('csdn', 7, '#'), 10, '*') result from dual

结果:
在这里插入图片描述
n < s1.length,则无论lpad/rpad(),结果都只显示s1的前n个字符(从左往右)。

1.2 instr(str1, str2[, pos][, n])

示例。

select instr(s1, s2, -2, 3) from dual;

表示在str1中,从倒数第2个开始,向左查找第3str2的位置。:无论a的正负,返回的都是绝对位置。

2、非空判断函数

参考笔记一,P18.1。

摘要参数说明返回值类型 / 返回值说明
nvl(a, b)anull,返回 b,否则返回 a
nvl2(a, b, c)a不为null,返回 b,否则返回 c
nullif(a, b)比较 a、b,若a = b,返回null,否则返回 a
case xx when w1 then c1 when w2 then c2 else c3 endxx = w1w1true,返回 c1;若xx = w2w2true,返回 c2;否则返回 c3
decode(xx, w1, c1, w2, c2, c3)作用同case()

3、日期函数

参考笔记一,P15.5。

摘要参数说明返回值类型 / 返回值说明
months_between(d1, d2)返回d1d2相差的自然月数
add_months(d, n)增加月数
next_day(d, '星期一')返回 d 后的第1个星期一
last_day(d)返回 d 当月的最后1天
round(d, 'dd')day四舍五入。'dd'是格式码,其他格式码:'CC'→ 世纪,'YY'→ 年,'mm'→ 月,'hh24'→ 小时,'mi'→ 分钟,'ss'→ 秒。其中,round(d, 'dd')等价于round(d)
trunc(d, 'dd')round()trunc(d, 'dd')等价于trunc(d)
extract(day from d)获取 d 的天数。day是标识符,表示“天”。其他标识符:'year'→ 年,'month'→ 月,

4、正则表达式相关函数

参考笔记三,P55.1。

摘要参数说明返回值类型 / 返回值说明
regexp_like(a, pattern)boolean类似like,判断是否包含匹配模式pattern的字符串,故仅能用于进行判断的位置,如:wherecheck()
regexp_substr(a, pattern, pos, n)n-第几个类似substr()
regexp_instr(a, pattern, pos, n)位置类似instr()
regexp_count(a, pattern)统计匹配模式的字符串个数
regexp_replace(a, pattern, str3)str3-用于替换的字符串类似replace()

注:

  1. 一般将正则表达式称为“模式”。
  2. 以下函数的参数列表是“必须”部分,考虑到实用性,一些可选参数未列举出。如果大家有兴趣,需另行查找。
  3. 以下“模式”函数与相应单行函数功能相同,可参照上文【单行函数】学习。
  4. 出于篇幅考虑,以下函数的示例数据来源于下文【视图-示例】,不便之处请谅解。
  5. 如果大家不了解“模式”,可查阅博文《正则表达式全解析+常用示例》(转发);若要深入了解,可查阅Pattern类中的【正则表达式的构造摘要】。

4.1 regexp_like(a, pattern)

示例:

select * from v where regexp_like(data, '#');

结果:
在这里插入图片描述

4.2 regexp_substr(a, pattern, pos, n)

示例:

select regexp_substr(data,'\d',1,1) as r11 from v;
select regexp_substr(data,'\d',1,2) as r12 from v;
select regexp_substr(data,'\d',1,3) as r13 from v;
select regexp_substr(data,'\d',2,1) as r21 from v;
select regexp_substr(data,'\d',2,2) as r22 from v;
select regexp_substr(data,'\d',2,3) as r23 from v;
select regexp_substr(data,'\d',3,1) as r31 from v;
select regexp_substr(data,'\d',3,2) as r32 from v;
select regexp_substr(data,'\d',3,3) as r33 from v;

结果:
在这里插入图片描述

4.3 regexp_instr(a, pattern, pos, n)

示例:

select regexp_instr(data,'\d',1,1) as r11 from v;
select regexp_instr(data,'\d',1,2) as r12 from v;
select regexp_instr(data,'\d',1,3) as r13 from v;
select regexp_instr(data,'\d',2,1) as r21 from v;
select regexp_instr(data,'\d',2,2) as r22 from v;
select regexp_instr(data,'\d',2,3) as r23 from v;
select regexp_instr(data,'\d',3,1) as r31 from v;
select regexp_instr(data,'\d',3,2) as r32 from v;
select regexp_instr(data,'\d',3,3) as r33 from v;

结果:
在这里插入图片描述

4.4 regexp_count(a, pattern)

示例:

select regexp_count(data, '\d') as count from v;

结果:
在这里插入图片描述

4.5 regexp_replace(a, pattern, str3)

示例:

select regexp_replace(data, '\d','?') as result from v;

结果:
在这里插入图片描述

最后

掌握内置函数,我建议:自测。

本文持续更新中。。。

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步·于辰

感谢打赏!很高兴可以帮到你!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值