MySQL字符串函数详解

devtools/2025/1/21 6:45:12/

简介

本文主要讲解MySQL中的字符串函数,包括:left、right、ltrim、rtrim、trim、upper、lower、lpad、rpad、concat、concat_ws、instr、substr、length、char_length、replace、reverse、char、ascii

left函数

语法:left(str,length),表示从字符串str左边开始截取指定长度length的部分,若length小于等于0,则返回空,若length大于等于str本身的长度,则返回str本身。

示例:从字符串【abcde】左边开始截取3个字符。

select left('abcde',3)

返回结果如下图:

right函数

语法:right(str,length),表示从字符串str右边开始截取指定长度length的部分,若length小于等于0,则返回空,若length大于等于str本身的长度,则返回str本身。

示例:从字符串【abcde】右边开始截取3个字符。

select right('abcde',3)

返回结果如下图:

ltrim函数

语法:ltrim(str),表示删除字符串str开头的所有空格。

示例:字符串【  abcde  】开头和结尾各有两个空格,现在删除其开头所有的空格。

select ltrim('  abcde  ')

返回结果如下图:左边空格被全部删除,右边空格全部保留。

rtrim函数

语法:rtrim(str),表示删除字符串str结尾的所有空格。

示例:字符串【  abcde  】开头和结尾各有两个空格,现在删除其结尾所有的空格。

select rtrim('  abcde  ')

返回结果如下图:右边空格被全部删除,左边空格全部保留。

trim函数

语法:trim(str),表示删除字符串str开头和结尾的所有空格,但不能删除中间的空格。

示例:字符串【 ab c de  】开头和结尾各有两个空格,中间也有空格,现在删除其开头和结尾所有的空格,保留中间的空格。

select trim('  ab c de  ')

返回结果如下图:左边和右边空格被全部删除,中间空格全部保留。

upper函数

语法:upper(str),表示将字符串str中所有的字母全部转换为大写。

示例:

select upper('abcde')

返回结果如下图:小写的abcde变成大写的ABCDE

lower函数

语法:lower(str),表示将字符串str中所有的字母全部转换为小写。

示例:

select lower('ABCDE')

返回结果如下图:大写的ABCDE变成小写的abcde

lpad函数

语法:lpad(str,len,padstr),表示在字符串str的最左侧填充指定的字符串padstr,直到达到指定的长度len,返回填充后的字符串,如果填充后str的长度大于len,则会对padstr进行截取以保证填充后的str长度刚好等于len。

示例:

select lpad('abc',6,'DE'); -- 返回:DEDabc
select lpad('abc',6,'D'); -- 返回:DDDabc
select lpad('abc',6,'DEFG'); -- 返回:DEFabc

rpad函数

语法:rpad(str,len,padstr),表示在字符串str的最右侧填充指定的字符串padstr,直到达到指定的长度len,返回填充后的字符串,如果填充后str的长度大于len,则会对padstr进行截取以保证填充后的str长度刚好等于len。

示例:

select rpad('abc',6,'DE'); -- 返回:abcDED
select rpad('abc',6,'D'); -- 返回:abcDDD
select rpad('abc',6,'DEFG'); -- 返回:abcDEF

concat函数

语法:concat(str1,str2,…),表示将str1、str2等多个字符串拼接起来,返回拼接后的字符串,如果有任何一个参数为NULL,则返回结果为NULL。

示例:

select concat('abc','de','f'); -- 返回:abcdef
select concat('abc','de',null); -- 返回:NULL
select concat('abc','','f'); -- 返回:abcf

concat_ws函数

语法:concat_ws(separator,str1,str2,...),表示将str1、str2等多个字符串按照指定的分隔符separator分隔后拼接起来,如果分隔符为NULL或者任何一个参与拼接的str为NULL,则返回结果为NULL。

示例:

select concat_ws('-','abc','de','f'); -- 返回:abc-de-f
select concat_ws('','abc','de','f'); --返回: abcdef
select concat_ws(NULL,'abc','de','f'); -- 返回:NULL
select concat_ws(NULL,'abc',NULL,'f'); -- 返回:NULL

instr函数

语法:instr(str, substr),表示返回子字符串substr在字符串str中第一次出现的位置,如果substr在str中没有出现,则返回0。

实例:

select instr('abcdbcfh','bc'); -- 返回:2
select instr('abcdbcfh','e'); -- 返回:0

substr函数

语法:substr(str,pos[,len]),表示从字符串str中第pos个字符开始从左往右截取指定长度len的子字符串。

注意:

len参数可选,如果没有指定截取长度参数len,则表示从pos位置开始一直截取到末尾;

如果pos大于0,则表示从开头第pos个字符位置开始截取(从左往右),如果pos小于0,则表示从倒数第pos个字符位置开始截取(从左往右),如果pos等于0,则返回结果为空。

示例:

select substr('abcdefg',1,3); -- 返回:abc
select substr('abcdefg',1,10); -- 返回:abcdefg
select substr('abcdefg',2); -- 返回:bcdefg
select substr('abcdefg',-1); -- 返回:g
select substr('abcdefg',-3); -- 返回:efg
select substr('abcdefg',-5,3); -- 返回:cde
select substr('abcdefg',-5,10); -- 返回:cdefg
select substr('abcdefg',0,5); -- 返回空

length函数

语法:length(str),返回字符串str的字节长度。对于UTF-8编码,一个中文字符占三个字节,一个英文字符占一个字节。

示例:

select length('abcde'); -- 返回:5
select length('汉字'); -- 返回:6

char_length函数

语法:char_length(str),返回字符串str的字符长度,不管是中文字符还是英文字符,都算作一个字符。

示例:

select char_length('abcde'); -- 返回:5
select char_length('汉字'); -- 返回:2

replace函数

语法:replace(str, old_str, new_str),表示对字符串str中出现的所有子字符串old_str,都用新字符串new_str进行替换,返回替换后的字符串str。

注意:如果old_str或new_str为NULL,则返回结果为NULL。

示例:

select replace('abcdebcef','bc','BC'); -- 返回:aBCdeBCef
select replace('abcdebcef','ab',''); -- 返回:cdebcef
select replace('abcdebcef','bc',NULL); -- 返回:NULL
select replace('abcdebcef',NULL,'bc'); -- 返回:NULL
select replace('abcdebcef','','h'); -- 返回:abcdebcef

reverse函数

语法:reverse(str),表示返回字符串str内容反转后的结果。

示例:

select reverse('abcde');

返回结果如下图:

char函数

语法:char(num1, [num2, ...]),表示将参数中的每一个num表示的ASCII码转换为字符,并将转换后的字符拼接起来作为返回结果,参数可以只有一个,也可以有多个。

示例:

select char(68); -- 返回:D
select char(65,66,67,68,69); -- 返回:ABCDE

ascii函数

语法:ascii(str),表示将字符串中的第一个字符转化为ASCII码,并作为返回结果。

示例:

select ascii('a'); -- 返回:97
select ascii('abcd'); -- 返回:97


http://www.ppmy.cn/devtools/152283.html

相关文章

Kotlin 2.1.0 入门教程(三)

变量 在 Kotlin 中,可以通过关键字 val 或 var 声明变量,后跟变量名称。 使用 val 关键字声明只能赋值一次的变量。这些是不可变的、只读的局部变量,初始化后不能重新赋值。 fun main() {val a 1val b: Int 2println("a $a, b $b…

【STM32-学习笔记-8-】I2C通信

文章目录 I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元① 起始条件② 终止条件③ 发送一个字节④ 接收一个字节⑤ 发送应答⑥ 接收应答 Ⅲ、IIC时序① 指定地址写② 当前地址读③ 指定地址读 Ⅳ、MPU6050---6轴姿态传感器(软件I2C)1、模块内部电路2、寄存器地…

Java ArrayList

Java ArrayList 从名字就可以看得出来,ArrayList 实现了 List 接口,并且是基于数组实现的。 有人就会问了 那ArrayList和数组有什么区别呢 数组的大小是固定的,一旦创建的时候指定了大小,就不能再调整了。也就是说,…

1166 Summit (25)

A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…

Jenkins-pipeline语法说明

一. 简述&#xff1a; Jenkins Pipeline 是一种持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;它允许用户通过代码定义构建、测试和部署流程。 二. 关于jenkinsfile&#xff1a; 1. Sections部分&#xff1a; Pipeline里的Sections通常包含一个或多个Direc…

[LeetCode] 哈希表 I — 242#有效的字母异位词 | 349#两个数组的交集 | 202#快乐数 | 1#两数之和

哈希表 基础知识常见的哈希结构数组242# 有效的字母异位词 Set基础语句349# 两个数组的交集202# 快乐数 Map基础语句1# 两数之和 基础知识 哈希表常用于快速判断一个元素是否在集合中&#xff0c;空间换时间 哈希表是根据key&#xff08;如数组的索引下标&#xff09;直接进行…

算法随笔_12:最短无序子数组

上一篇: 算法随笔_11: 字符串的排列-CSDN博客 题目描述如下: 给你一个整数数组 nums &#xff0c;你需要找出一个 连续子数组 &#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。请你找出符合题意的最短子数组&#xff0c;并输出它的长度。…