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

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

时间:2024-08-02 10:56:03浏览次数:16  
标签:面试官 内置 函数 instr pattern substr regexp data select

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://www.cnblogs.com/cnb-yuchen/p/18338279
出自【进步*于辰的博客

目录

先言

字符串前有一个' '(空字符),故首字母的位置是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 end xx = 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;

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

最后

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

本文持续更新中。。。

标签:面试官,内置,函数,instr,pattern,substr,regexp,data,select
From: https://www.cnblogs.com/cnb-yuchen/p/18338279

相关文章

  • [Oracle]面试官:你简单说说常用的4种约束
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18338278出自【进步*于辰的博客】参考笔记一,P22.18~22。目录1、介绍2、外键约束3、check约束4、notnull约束最后1、介绍“约束”是一种对数据表字段存储数据的限制,分......
  • 微信小程序生命周期函数介绍
    微信小程序生命周期函数有两种   页面生命周期:onLoad,onShow,onReady,onHide,onUnload等   组件的生命周期:created,attached,ready,moved,detached,erroronLoad:监听页面加载一个页面只会调用一次,能够在onLoad中获取打开当前页面所调用的query参数     onLoad(options){......
  • 二维字符型数组和函数
    二维字符型数组chara[5][10]可以存储最大长度为为10的,5个字符串;按行初始化:a[5][10]={“hello”,“world“,“who”,“are”,“you”} chars[3][10]={{"hello"},{"world"},{"english"}};   gets(s[0]);//s[0]就是第0行这个一维字符型数组的数组名    sca......
  • 字符串相关函数、二维数组-
    目录strcpy--字符串复制函数strcat--字符串拼接函数strcmp--字符串对比函数字符串相关函数:二维数组初始化:strcpy--字符串复制函数char*strcpy(char*dest,constchar*src);功能:  将src中字符串拷贝到dest中 用法: strcpy(dest,src);//dest是一个字......
  • /*使用strchr(),strrchr(),strpdrk()函数*/
    /使用strchr(),strrchr(),strpdrk()函数/#include<stdio.h>#include<string.h>/使用strchr()函数:如果s字符串中包含c字符,该函数返回指向s字符串首次出现c字符的指针,未找到返回NULL/voidstr_chr(constchar*s,intc){if(strchr(s,c)!=NULL){printf......
  • Hive学习第九天--函数的用法
    1.1 Hive窗口函数普通的聚合函数每组(Groupby)只返回一个值,而开窗函数则可为窗口中的每行都返回一个值。简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。开窗函数一般就是说的是over()函数,其窗口是由一个OVER子句定义的多行记录开窗函数一般分为两......
  • 每天五分钟玩转深度学习框架PyTorch:选择函数where和gather
    本文重点如图表所示,这几个方法可以理解为索引函数,有些函数在切片和索引一章进行了简单的介绍,本文将再次进行介绍,温故知新。index_select通过特殊的索引来获取数据index_select,这个这样来理解,第一个参数表示a的第几维度,第二个参数表示获取该维度的哪部分。我们把16,3,28,28看......
  • 反函数与隐函数
    隐函数定理\(\bfTheorem\;1.\quad\)设\(\Omega\in\mathbbR^m\times\mathbbR^n\)为开集,\(\boldsymbolF(\boldsymbolx,\boldsymboly)\)(其中\(\boldsymbolx\in\mathbbR^m,\boldsymboly\in\mathbbR^n\))满足\(\boldsymbolF(\boldsymbolx,\bold......
  • 嵌入式软件--C语言高级 DAY 8 函数
    函数是C语言尤为重要的知识点,再嵌入式的学习过程中,对51和32的单片机的学习是重中之重。一、函数的基本概念1.介绍函数是一种可重复使用的代码块,用于执行特定的任务或操作。函数允许我们将代码逻辑组织成独立的单元,从而提高了代码的可读性、可维护性和重用性。一个C程序可......
  • SQL常用函数
     SQL提供了许多内置的函数,这些函数可以在查询过程中对数据进行各种操作和处理。以下是一些SQL中常用的函数分类及其示例:1.字符串函数CONCAT():连接两个或多个字符串。SELECT CONCAT('Hello', ' ', 'World') AS greeting;LENGTH()或LEN():返回字符串的长度。SEL......