当前位置: 首页 > news >正文

MySQL数据库-字符串函数详解

前言

MySQL数据库提供了多种不同类型的函数,用于处理字符串、日期、数值等数据类型,以及实现条件、聚合等操作,下面我们主要介绍字符串函数

CONCAT()

函数 CONCAT() 可用于将多个字符串连接在一起。

示例:

SELECT CONCAT('Hello', ' ', 'World') AS result;
-- Output: Hello World

SUBSTRING()

函数 SUBSTRING() 可用于从字符串中提取子串。

示例:

SELECT SUBSTRING('Welcome to MySQL', 3, 7) AS result;
-- Output: lcome t

 CHAR_LENGTH()

函数 CHAR_LENGTH() 用于返回字符的长度(以字符个数为单位)。

示例:

SELECT CHAR_LENGTH('MySQL') AS result;
-- Output: 5

 LOWER() / UPPER()

函数 LOWER() 和 UPPER() 可用于将字符串转换为小写和大写。

示例:

SELECT LOWER('Hello') AS result1, UPPER('World') AS result2;
-- Output: hello, WORLD

TRIM()

函数 TRIM() 可用于去除字符串两端的空格或指定的字符。

示例:

SELECT TRIM('   Hello   ') AS result;
-- Output: Hello

REPLACE()

函数 REPLACE() 可用于替换字符串中的子串。

示例:

SELECT REPLACE('Hello World', 'World', 'MySQL') AS result;
-- Output: Hello MySQL

LENGTH()

函数 LENGTH() 返回字符串的长度(以字节为单位)。

示例:

SELECT LENGTH('MySQL') AS result;
-- Output: 5

INSTR()

函数 INSTR() 用于查找子串在字符串中第一次出现的位置。

示例:

SELECT INSTR('Hello World', 'World') AS result;
-- Output: 7

INSERT()

函数 INSERT() 可以将一个字符串插入到另一个字符串的指定位置。

示例:

SELECT INSERT('Hello World', 7, 0, 'MySQL ') AS result;
-- Output: Hello MySQL World

CONCAT_WS()

函数 CONCAT_WS() 可用于将多个字符串以指定的分隔符连接在一起。

示例:

SELECT CONCAT_WS('-', '2023', '08', '17') AS result;
-- Output: 2023-08-17

LPAD() / RPAD()

函数 LPAD() 和 RPAD() 可将字符串填充到指定的长度。

示例:

SELECT LPAD('Hello', 10, '*') AS result1, RPAD('World', 10, '*') AS result2;
-- Output: ****Hello, World*****

LEFT() / RIGHT()

函数 LEFT() 和 RIGHT() 可用于从字符串的左侧或右侧提取指定长度的子串。

示例:

SELECT LEFT('MySQL', 3) AS result1, RIGHT('MySQL', 2) AS result2;
-- Output: MyS, L

REVERSE()

函数 REVERSE() 可以将字符串反转。

示例:

SELECT REVERSE('Hello') AS result;
-- Output: olleH

MID()

函数 MID() 可以从指定位置开始提取指定长度的子串。

示例:

SELECT MID('MySQL', 2, 3) AS result;
-- Output: ySQ

LOCATE()

函数 LOCATE() 可以查找子串在字符串中第一次出现的位置。

示例:

SELECT LOCATE('World', 'Hello World') AS result;
-- Output: 7

CONCAT_NULL_YIELDS_NULL

变量 CONCAT_NULL_YIELDS_NULL 可以控制连接操作中 NULL 值的处理。当设置为 ON(默认值)时,任何与 NULL 进行连接的操作都将结果置为 NULL。

示例:

SET CONCAT_NULL_YIELDS_NULL = OFF;
SELECT CONCAT('Hello', NULL) AS result;
-- Output: Hello

FIND_IN_SET()

函数 FIND_IN_SET() 可以找到字符串在逗号分隔的字符串列表中的位置。

示例:

SELECT FIND_IN_SET('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

FORMAT()

函数 FORMAT() 可以将数字格式化为带有逗号分隔的字符串。

示例:

SELECT FORMAT(12345.67, 2) AS result;
-- Output: 12,345.67

REGEXP()

函数 REGEXP() 可以使用正则表达式进行模式匹配。

示例:

SELECT 'Hello' REGEXP '^H' AS result;
-- Output: 1 (表示匹配)

UCASE() / LCASE()

函数 UCASE() 和 LCASE() 可用于将字符串转换为大写和小写。

示例:

SELECT UCASE('hello') AS result1, LCASE('WORLD') AS result2;
-- Output: HELLO, world

        

STRCMP()

函数 STRCMP() 可用于比较两个字符串。

示例:

SELECT STRCMP('Hello', 'Hello') AS result;
-- Output: 0 (表示相等)

SUBSTRING_INDEX()

函数 SUBSTRING_INDEX() 可用于从字符串中提取子串,基于指定的分隔符与出现次数。

示例:

SELECT SUBSTRING_INDEX('www.example.com', '.', 2) AS result;
-- Output: www.example

TRIM()

函数 TRIM() 可用于去除字符串两端的空格或指定的字符。

示例:

SELECT TRIM('   Hello   ') AS result;
-- Output: Hello

STR_TO_DATE() / DATE_FORMAT()

函数 STR_TO_DATE() 可以将字符串转换为日期,并且可以使用 DATE_FORMAT() 将日期格式化为字符串。

示例:

SELECT STR_TO_DATE('2023-08-17', '%Y-%m-%d') AS result1, DATE_FORMAT(NOW(), '%Y-%m-%d') AS result2;
-- Output: 2023-08-17, 当前日期

HEX()

函数 HEX() 可以将字符串转换为十六进制格式。

示例:

SELECT HEX('Hello') AS result;
-- Output: 48656C6C6F

ASCII()

函数 ASCII() 可以返回字符的 ASCII 值。

示例:

SELECT ASCII('A') AS result;
-- Output: 65

REPEAT()

函数 REPEAT() 可以将字符串重复指定次数。

示例:

SELECT REPEAT('MySQL', 3) AS result;
-- Output: MySQLMySQLMySQL

CONCAT_WS()

函数 CONCAT_WS() 可用于将多个字符串以指定的分隔符连接在一起。

示例:

SELECT CONCAT_WS('-', '2023', '08', '17') AS result;
-- Output: 2023-08-17

CONCAT()

函数 CONCAT() 可用于将多个字符串连接在一起。

示例:

SELECT CONCAT('Hello', ' ', 'World') AS result;
-- Output: Hello World

SOUNDEX()

函数 SOUNDEX() 可以返回字符串的音标编码。

示例:

SELECT SOUNDEX('Hello') AS result;
-- Output: H400

FIELD()

函数 FIELD() 可以返回字符串在逗号分隔的列表中的位置。

示例:

SELECT FIELD('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

ELT()

函数 ELT() 可以返回指定位置的字符串。

示例:

SELECT ELT(2, 'Apple', 'Banana', 'Cherry') AS result;
-- Output: Banana

MID()

函数 MID() 可以从指定位置开始提取指定长度的子串。

示例:

SELECT MID('MySQL', 2, 3) AS result;
-- Output: ySQ

BINARY()

函数 BINARY() 可以将字符串转换为二进制字符串。

示例:

SELECT BINARY('Hello') AS result;
-- Output: 48656C6C6F

REGEXP_REPLACE()

函数 REGEXP_REPLACE() 可以使用正则表达式进行字符串替换。

示例:

SELECT REGEXP_REPLACE('Hello World', 'Wo*', '') AS result;
-- Output: Hello rld

REVERSE()

函数 REVERSE() 可以反转字符串。

示例:

SELECT REVERSE('Hello World') AS result;
-- Output: dlroW olleH

FIND_IN_SET()

函数 FIND_IN_SET() 可用于在逗号分隔的列表中查找字符串的位置。

示例:

SELECT FIND_IN_SET('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

UNHEX()

函数 UNHEX() 可以将十六进制字符串转换为二进制数据。

示例:

SELECT UNHEX('48656C6C6F') AS result;
-- Output: Hello

OCT()

函数 OCT() 可以将十进制数转换为八进制数。

示例:

SELECT OCT(50) AS result;
-- Output: 62

HEX()

函数 HEX() 可以将数字转换为十六进制格式。

示例:

SELECT HEX(255) AS result;
-- Output: FF

 后语

MySQL字符串函数提供了许多强大的功能和优点,使得在处理字符串数据时更加方便和高效。以下是MySQL字符串函数的一些优点:

  1. 字符串操作和转换: MySQL字符串函数可以执行各种字符串操作,如连接字符串、提取子字符串、字符串替换、字符串转换为大写或小写等。这使得在数据库层面上进行字符串操作更加方便和高效,而无需在应用程序中处理。

  2. 数据整理和清洗: 字符串函数可用于数据的整理和清洗。例如,TRIM函数可以去除字符串两端的空格或指定的字符,而REPLACE函数可以轻松替换字符串中的某个子串。这使得处理和准备数据变得更加简单和可控。

  3. 字符串匹配和搜索: MySQL字符串函数提供了强大的字符串匹配和搜索功能。函数如LOCATE、REGEXP、FIND_IN_SET等可用于查找特定字符串、正则表达式匹配、在逗号分隔的列表中查找字符串等。这对于数据查询和筛选非常有用。

  4. 格式化和转换: 字符串函数可用于格式化和转换数据。例如,DATE_FORMAT函数可以将日期转换为指定格式的字符串,STR_TO_DATE函数可以将字符串解析为日期类型。这些转换功能对于数据报表生成和跨平台数据交互非常有帮助。

  5. 性能优化: 使用MySQL内置的字符串函数可以优化查询性能。在数据库层面上进行字符串操作和转换通常比在应用程序中进行更高效,特别是当涉及到大量数据处理时。

  6. 可嵌套和组合: MySQL字符串函数可以嵌套和组合使用,以实现更复杂的字符串操作。这使得在一个函数调用中执行多个操作成为可能,简化了编写复杂查询和处理复杂字符串逻辑的过程。

总的来说,MySQL字符串函数提供了丰富的功能和灵活性,可以帮助简化代码、提高性能,并使得处理和操作字符串数据更加方便和高效。

目前先举例这些关于字符串函数,如大家有补充,欢迎大家下面评论!

相关文章:

MySQL数据库-字符串函数详解

前言 MySQL数据库提供了多种不同类型的函数,用于处理字符串、日期、数值等数据类型,以及实现条件、聚合等操作,下面我们主要介绍字符串函数 CONCAT() 函数 CONCAT() 可用于将多个字符串连接在一起。 示例: SELECT CONCAT(Hell…...

半导体退火那些事(3)

4.半导体退火设备 双腔全自动兼容6-8寸快速退火炉RTP 产地:中国 型号: S803 特点: 室温到1250C,应用于SiC,GaN等第三代半导体领域 简介 (Description) S803系列自动快速退火炉,内置Robot可以自动取放片,适用于最大8英寸 (单片200m…...

1281. 整数的各位积和之差

诸神缄默不语-个人CSDN博文目录 力扣刷题笔记 文章目录 1. 简单粗暴的遍历2. 其实也是遍历,但是用Python内置函数只用写一行 1. 简单粗暴的遍历 Python版: class Solution:def subtractProductAndSum(self, n: int) -> int:he0ji1while n>1:last…...

如何使用Vue和C++实现OJ《从零开始打造 Online Judge》

课程简介 课程链接:https://www.lanqiao.cn/courses/20638 邀请码:x8pGd60V 本课程采用前后端分离架构,基于 Vue.js 和 C 技术,从零开始打造 Online Judge。 课程介绍 OJ 是 Online Judge 系统的简称,用来在线检测…...

在Spring Boot和Vue中实现请求过滤器以验证请求头中的Token

在Spring Boot应用程序中创建一个过滤器类,用于处理请求: Component public class AuthenticationFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException,…...

ThreeJS——在3D地球上标记中国地图板块

Threejs3D地球标记中国地图位置 先看效果 地球预览视频效果 用到的库 TweenJS (动画库)用来做相机转场的动画Jquery(这里只用到一个 each 循环方法,可以使用 js 去写)ThreeJS (3D 地球制作)100000.json(全国城市经纬度)d3.v6.js用来设置平面转3D效果(本来考虑做成…...

第2章 性能测量

理解应用程序性能的第一步是学会对它进行测量。 与绝大多数功能问题相比,性能问题通常很难跟踪和复现。 任何关注过性能评估的人可能都知道公允地进行性能测量并从中得到准确结论是多么困难。 因为在测量中存在误差,性能分析通常需要统计方法进行处理…...

未来,运营的重要性大于产品?

微博上看到某产品大V的一个观点,说在未来,产品运营的重要性会大过产品经理,还挺认同的,谈谈我的想法。 这个观点的核心依据是,目前没有新的产品形态,各种产品解决方案都是标准化的,产品由开疆辟…...

paddle ocr框架识别数字问题和解决方案

识别出的字符串重复 情况1:检测错误,同一个字符串被两次检测到 比如 “12 方案 ” 被识别成:“12” “2方案”,这种可以通过x坐标交叉并且第一个结果最后一个字符与第二个结果第一个字符相同判断 情况2: 识别错误&am…...

构建高性能的MongoDB数据迁移工具:Java的开发实践

随着大数据时代的到来,数据迁移成为许多企业和组织必须面对的挑战之一。作为一种非关系型数据库,MongoDB在应用开发中得到了广泛的应用。为了满足数据迁移的需求,我们需要一个高性能、稳定可靠的MongoDB数据迁移工具。下面将分享使用Java开发…...

2023年国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…...

1572. 矩阵对角线元素的和

题目描述: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例: 解题思路: 同时求对角线和副对角线上元素的和再减去重合的元素 相关代码&#xf…...

在vue中使用swiper轮播图(搭配watch和$nextTick())

在组件中使用轮播图展示图片信息: 1.下载swiper,5版本为稳定版本 cnpm install swiper5 2.在组件中引入swiper包和对应样式,若多组件使用swiper,可以把swiper引入到main.js入口文件中: import swiper/css/swiper.css //引入swipe…...

Java书签 #使用MyBatis接入多数据源

楔子:当然,世上有很多优秀的女性,我也会被她们吸引。这对男人来说是理所当然的。但目光被吸引和内心被吸引是截然不同的。- 东野圭吾《黎明之街》 今日书签 在一些应用场景中,可能需要连接多个不同的数据库,例如连接不…...

神经网络基础-神经网络补充概念-23-神经网络的梯度下降法

概念 神经网络的梯度下降法是训练神经网络的核心优化算法之一。它通过调整神经网络的权重和偏差,以最小化损失函数,从而使神经网络能够逐渐逼近目标函数的最优值。 步骤 1损失函数(Loss Function): 首先&#xff0c…...

鸿蒙3.1 设备管理DeviceManager

介绍 DeviceManager组件在OpenHarmony上提供账号无关的分布式设备的认证组网能力,并为开发者提供了一套用于分布式设备间监听、发现和认证的接口。 其组成及依赖如下所示: 总结 设备管理模块其实就是软总线的包皮服务。目前权限都是控制系统uid,但是根据官方介绍,后续可…...

Git 目录详解

一、Git目录详解 在使用Git时,有几个目录和文件在Git项目中扮演着重要的角色,下面详细介绍一下这些目录和文件的作用 1、.git目录 .git目录是Git项目的核心,包含了Git的版本库和元数据等重要信息。在该目录中,有一些重要的子目录和…...

基于springboot+vue的武汉旅游网(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

步入React正殿 - React组件设计模式

目录 扩展学习资料 高阶组件 /src/components/hoc/withTooltip.js /src/components/hoc/itemA.jsx /src/components/hoc/itemB.jsx /src/App.js 函数作为子组件【Render pprops】 函数作为子组件 /src/components/rp/itemC.jsx【父组件】 /src/components/rp/withToo…...

Java 单例模式简单介绍

何为单例模式 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 实现思路 如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...

vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能

vxe-table vue 表格复选框多选数据&#xff0c;实现快捷键 Shift 批量选择功能 查看官网&#xff1a;https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...