Oracle实践|内置函数之字符串函数

在这里插入图片描述

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

文章目录

  • 序言
    • 背景说明
    • 示例环境
  • 内置函数
    • 1 字符串长度-LENGTH
    • 2 字符串截取-SUBSTR
    • 3 字符串查找-INSTR
    • 4 字符串大小写转换
      • I 转换为大/小写字符
      • II 每个单词首字母大写
    • 5 字符串替换
    • 6 字符串拼接-CONCAT
    • 7 字符串填充
    • 8 字符串去除
        • I 去除左/右指定字符串
        • II 去除指定字符串
  • 总结

序言

背景说明

清晨醒来就写了一篇关于前几日做错题的博文,博闻强记,加深印象,增加视野,所以这里又想着写一篇关于INSTR相关或者相近的内置函数的使用。针对INSTR内置函数时针对字符串的操作,所以这里也想介绍一下其他的字符串相关的内置函数。例如
Oracle 数据库提供了丰富的内置函数,涵盖数值处理、字符串操作、日期和时间处理、逻辑判断、集合处理、数据分析、数据类型转换等多个方面。下面就随着我一起来学习下这个内置函数吧,有解释不到之处,还望批评指正。
在这里插入图片描述

示例环境

本篇示例是基于Oracle DB 19c EE (19.17.0.0.0)版本操作,如果有不同之处,请指出。
在这里插入图片描述

内置函数

1 字符串长度-LENGTH

【定义】

LENGTH(string):返回字符串的字符数量,例如字符串“abc”的长度为 3,则返回 3 。

【示例】

select LENGTH('我是字符串') from dual;

在这里插入图片描述

2 字符串截取-SUBSTR

【定义】

SUBSTR(string, start[, length]):提取字符串的一部分。

【参数】
● string:在哪一个字符串中提取,查找。
● start:在string字符串中开始查找的位置。
● length(可选):查找的长度。

【示例】
例如查找字符串(我是字符串)从第2个字符开始查找,查找长度默认从第二个开始,到字符串结束位置。如果明确了长度,那么从第2个字符开始查找,往后查找的长度为3后的字符串。

select SUBSTR('我是字符串', 2) default_1,SUBSTR('我是字符串', 2, 3) default_2
from dual;

在这里插入图片描述

3 字符串查找-INSTR

相关内容请参考上一篇博文,上一篇博文做了详细的介绍以及使用情况。

4 字符串大小写转换

I 转换为大/小写字符

【定义】

UPPER(string):将字符串转换为全大写。
LOWER(string):将字符串转换为全小写。

【示例】

select UPPER('I am Aion, I come from Guangzhou') default_1,LOWER('I am Aion, I come from Guangzhou') default_2
from dual;

在这里插入图片描述

II 每个单词首字母大写

【定义】

INITCAP(string):将字符串中每个单词的首字母转换为大写字母。

【示例】

select INITCAP('I am Aion, I come from Guangzhou') default_1
from dual;

在这里插入图片描述

5 字符串替换

【定义】

REPLACE(string, old_pattern, new_pattern):替换字符串中的子串,这个内置函数比较常用。
REGEXP_REPLACE(string, pattern, replacement[, flags]):使用正则表达式替换字符串中的子串,使用场景例如一些编号,新系统与旧系统的编号不一致,但是数据都在一起的情况,此时可以使用这个内置函数处理下后展示。

【示例】

select REPLACE('I am Aion, I come from Guangzhou', 'Guangzhou', 'Tsingtao') default_1,REGEXP_REPLACE('I am Aion, I come from Guangzhou, My phone number is 13800138000', '\d', '*') default_2
from dual;

在这里插入图片描述

6 字符串拼接-CONCAT

【定义】

CONCAT(string1, string2, …) :连接多个字符串,也是一个比较常用的内置函数,尤其是很多会在代码中直接写,当然你也可以这样子写:string1 || string2。

【示例】

selectCONCAT('I am Aion', 'I come from Guangzhou') column_1,'I am Aion'||'I come from Guangzhou' column_2
from dual;

在这里插入图片描述

7 字符串填充

字符串填充,同我们在Excel中处理字符差不多,可以从左边开始,也可以从右边开始(或者说倒序处理)

【定义】

LPAD(string, length[, pad_char]): 左侧填充字符至指定长度。
RPAD(string, length[, pad_char]):右侧填充字符至指定长度。

【参数】

  • string:原字符串。
  • length:填充到指定长度(下面填充长度)。
    • 如果填充长度等于原字符串长度,则返回原字符串;
    • 如果填充长度小于原字符串长度,则不填充且截取原字符串到填充长度;
    • 如果填充长度大于原字符串长度,则需要补充的长度为原字符串+填充字符串长度(多余截取)。
  • pad_char:填充的字符串。

【示例一】
如果填充长度等于原字符串长度,则返回原字符串。

selectLENGTH('I am Aion') column_len,LPAD('I am Aion', 14, 'Hello') column_L,RPAD('I am Aion', 14, 'Hello') column_R
from dual;

在这里插入图片描述
【示例二】
例如原字符串长度为9,使用LPAD函数左填充到11长度,填充字符串为「hello」,那么返回的结果为原字符串(I am Aion)长度9补充到11长度,那么就要从字符串(hello)中再拿俩字符串来填充到11长度位数。相反RPAD也是这个道理。

selectLENGTH('I am Aion') column_len,LPAD('I am Aion', 11, 'Hello') column_L,RPAD('I am Aion', 16, 'Hello') column_R
from dual;

在这里插入图片描述

8 字符串去除

I 去除左/右指定字符串

【定义】

LTRIM(string[, trim_chars]):去除字符串左侧指定字符。
RTRIM(string[, trim_chars]):去除字符串右侧指定字符。

【参数】
● string:原始字符串。
● trim_chars:需要删除的指定的字符,默认不填写则删除空格,遇到非空格则停止删除。

【示例】
默认不指定需要删除的字符串,则先删除空格,遇到非空格则停止删除,返回删除空格后的字符串。

selectLTRIM('   不装了,摊 牌 了,这题目一直迷惑我,做错了') column_L,RTRIM('不装了,摊牌了,这 题 目 一 直 迷 惑 我,做错了   ') column_R
from dual;

在这里插入图片描述

指定需要删除的字符串,按整体匹配到则删除,匹配不到则停止删除,返回删除空格后的字符串。

II 去除指定字符串

【定义】

TRIM([leading|trailing|both] [trim_chars] FROM string):从指定位置移除指定字符。

【参数】
● leading:指定从字符串的开头删除匹配字符。
● trailing:指定从字符串的结尾删除匹配字符。
● both:或者如果不指明任何位置,则指定从字符串的两端删除匹配字符。
● trim_chars:是要被删除的字符或字符集。如果不指定此参数,则默认为空格。
● string:是需要被处理的字符串或数值。

【示例】
默认情况下,TRIM内置函数是去掉左右两边的空格,遇到非空格则停止去除动作,返回去除空格后的字符串。

select TRIM(' 不装了,摊 牌 了  ') default_1,TRIM(leading ' ' FROM ' 不装了,摊 牌 了  ') default_2,TRIM(trailing ' ' FROM ' 不装了,摊 牌 了  ') default_3,TRIM(both ' ' FROM ' 不装了,摊 牌 了  ') default_4,TRIM(both 'x' FROM 'x不装了,摊x牌x了xx') default_5
from dual;

在这里插入图片描述

从上面的实验示例来看:
default_1是去掉了两边的空格,执行的是默认情况;
default_2是从头部开始去除空格;
default_3是从尾部开始去除空格;
default_4是从两边开始去除空格(头部和尾部都去掉空格,遇到非空格则停止执行,返回结果);
default_5是从两边开始去除字符x,这个结果同default_4。

总结

有些内置函数可以在SELECT语句中用于处理数据,同时也可以在WHERE等语句中使用。今天了解到的函数在处理数据库中的字符串数据时非常有用,特别是当需要转换、去除、清理或格式化数据时。具体是如何使用,都要考虑使用场景以及性能方面的问题,后续会再出一些相关的博文。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++模板——函数模板和类模板

目录 泛型编程 函数模板 函数模板概念 函数模板的定义和语法 函数模板的工作原理 函数模板的实例化 隐式实例化 显示实例化 函数模板的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 什么是泛型编程? 泛型编程(Generic Pr…

【Linux-并发与竞争】

Linux-并发与竞争 ■ 原子操作■ 原子操作简介■ 原子整形操作 API 函数■ 原子位操作 API 函数■ 示例一:原子操作实验,使用原子变量来实现对实现设备的互斥访问 ■ 自旋锁■ 自旋锁 API 函数■ 死锁■ 最好的解决死锁方法就是获取锁之前关闭本地中断&a…

LeetCode 124 —— 二叉树中的最大路径和

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 二叉树的问题首先我们要想想是否能用递归来解决,本题也不例外,而递归的关键是找到子问题。 我们首先来看看一棵最简单的树,也就是示例 1。这样的一棵树总共有六条路径&#xf…

docker如何拉取nginx最新镜像并运行

要拉取Docker Hub上的最新Nginx镜像,您可以使用以下命令: docker pull nginx 这个命令会从Docker Hub下载最新版本的Nginx镜像。如果您想要拉取特定版本的Nginx镜像,可以指定版本号,例如: docker pull nginx:1.18.0 拉…

详细分析tcping的基本知识以及用法

目录 前言1. 安装配置2. 基本知识3. Demo 前言 针对ping的基本知识推荐阅读:详细分析ping的基本知识以及常见网络故障的诊断(图文解析) 1. 安装配置 针对Window的下载如下: 安装路径:tcping官网 下载tcping.exe&a…

《微服务王国的守护者:Spring Cloud Dubbo的奇幻冒险》

5. 经典问题与解决方案 5.3 服务追踪与链路监控 在微服务架构的广袤宇宙中,服务间的调用关系错综复杂,如同一张庞大的星系网络。当一个请求穿越这个星系,经过多个服务节点时,如何追踪它的路径,如何监控整个链路的健康…

VUE3 学习笔记(3):VUE模板理念、属性绑定、条件渲染、列表渲染

准备 1.清空不必要的项目文件 项目/src/assets/ 目录文件清空 项目/src/components/ 目录文件清空 删除main.js 的css引用 App.vue 代码如下 <template> </template> <script>//注意这里默认有一个setup 去掉 </script> 运行一下无错误提示就可以了…

Cohere继Command-R+之后发布大模型Aya-23,性能超越 Gemma、Mistral 等,支持中文

前言 近年来&#xff0c;多语言大模型&#xff08;MLLM&#xff09;发展迅速&#xff0c;但大多数模型的性能依然存在显著差距&#xff0c;尤其是在非英语语言方面表现不佳。为了推动多语言自然语言处理技术的发展&#xff0c;Cohere团队发布了新的多语言指令微调模型家族——…

机器学习预测-CNN手写字识别

介绍 这段代码是使用PyTorch实现的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;用于在MNIST数据集上进行图像分类。让我一步步解释&#xff1a; 导入库&#xff1a;代码导入了必要的库&#xff0c;包括PyTorch&#xff08;torch&#xff09;、神经网络模块&#xff0…

shell脚本实战--批量修改文件名

字符串截取 先来了解一下shell字符串相关操作的变量 # 从开头删除匹配最短 ## 从开头删除匹配最长 % 从结尾削除匹配最短 %% 从结尾删除匹配最长#指定字符内容截取 a*c 匹配开头为a&#xff0c;中间任意个字符&#xff0c;结尾为c的字符串 a*C 匹配…

Java—集合Collection(一)

Java—集合Collection&#xff08;一&#xff09; 一、Collection集合1、方法add、addAll2、声明集合特别注意1&#xff1a;添加对象时需要创建对象类 3、总结4、判断方法4.1、总结 5、删除6、总结7、集合的其他方法8、所有代码演练 存放单个数据内容&#xff0c;声明一个变量&…

netcat一键开始瑞士军刀模式(KALI工具系列六)

目录 1、KALI LINUX简介 2、netcat工具简介 3、在KALI中使用netcat 3.1 目标主机IP&#xff08;win&#xff09; 3.2 KALI的IP 4、命令示例 4.1 测试某IP的端口是否打开 4.2 TCP扫描 4.3 UDP扫描 4.4 端口刺探 4.5 直接扫描 5、即时通信 5.1 单击对话互联 5.2 传…

新能源锂电池行业创业的财富方案,锂电池回收高阶课

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89292234 更多资源下载&#xff1a;关注我。 实战攻略 12年锂电池回收行业经验与坑全收录 课程内容&#xff1a; 001-课程介绍.mp4 002-锂电池的全种类认识.mp4 003-废品锂电池到级片粉末价值估算,mp…

Go微服务: Http服务注册在Consul的示例(非Go-Micro)

概述 现在&#xff0c;我们使用consul客户端的api来把Http服务注册到consul上&#xff0c;非Go-Micro的形式其实&#xff0c;consul官方提供了对应的接口调用来实现&#xff0c;golang中的consul/api包对其进行了封装我们使用consul/api来进行展示 目录结构 gitee.com/go-mi…

设计模式7——建造者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 建造者模式&#xff08;Builde…

VMware ESXi 7.0 U3q 发布 - 领先的裸机 Hypervisor

VMware ESXi 7.0 U3q 发布 - 领先的裸机 Hypervisor VMware ESXi 7.0 Update 3 Standard & All Custom Image for ESXi 7.0U3 Install CD 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-7-u3/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出…

3小时-入门短视频创作:短视频创作入门必修(15节视频课)

课程目录 1、先导课.mp4 2、建立视听思维.mp4 3、口语化.mp4 4、具象化.mp4 5、建立选题思维.mp4 6、2个小白好上手的选题技巧.mp4 7、建立开场思维.mp4 8、3个口播视频方能开场套路.mp4 9、建立脚本结构思维.mp4 10、爆款口指的3大结构.mp4 11、建立标题思维.mp4 …

https为何安全?

HTTPS&#xff08;超文本传输安全协议&#xff09;是一种用于安全通信的网络协议&#xff0c;它在HTTP协议的基础上通过SSL/TLS&#xff08;安全套接层/传输层安全&#xff09;协议来加密数据&#xff0c;以保护网络数据的传输安全。 TLS/SSL 基础概念 概念源自百度百科&…

内存的基本知识与连续分配管理

目录 一. 内存的基础知识1.1. 什么是内存1.2 指令的工作原理1.2.1 装入的三种方式 - 绝对装入1.2.2 可重定位装入1.2.3 动态重定位装入1.3 从写程序到程序运行 二. 基本内存管理的概念三. 覆盖与交换3.1 覆盖技术3.2 交换技术 四. 连续分配管理方式4.1 单一连续分配4.2 固定分区…

【全开源】知识答题系统源码小程序(FastAdmin+ThinkPHP+Unipp)

打造智慧问答的基石 一、引言&#xff1a;知识答题系统的时代意义 在信息爆炸的时代&#xff0c;知识答题系统源码作为一种高效、有趣的知识传播方式&#xff0c;受到了越来越多人的关注和喜爱。通过搭建知识答题系统&#xff0c;我们可以将海量的知识内容以答题的形式展现给…