MySQL入门篇-MySQL常用字符函数小结
备注:测试数据库版本为MySQL 8.0
这个blog我们来聊聊常见的字符函数
函数名 | 函数用途 |
---|---|
UPPER() | 返回大写的字符 |
LOWER() | 返回小写的字符 |
LTRIM() | 左边去掉空格 |
TRIM() | 去掉空格 |
RTRIM() | 右边去掉空格 |
SPACE() | 返回指定长度的空格 |
CONCAT() | 连接字符串 |
CONCAT_WS() | 指定分隔符连接字符串 |
CHAR_LENGTH() | 返回字符个数 |
LENGTH() | 返回字节个数 |
SUBSTR() | 截取字符 |
SUBSTRING_INDEX() | 截取字符 |
INSTR() | 字符出现位置函数 |
LEFT() | 返回左边N个字符 |
RIGHT() | 返回右边N个字符 |
LPAD() | 在左边填充指定内容 |
RPAD() | 在右边填充指定内容 |
LIKE | 匹配字符函数 |
QUOTE() | 输出转义字符 |
REPEAT() | 重复字符 |
REPLACE() | 替换字符 |
REVERSE() | 反转字符 |
大小写函数
UPPER() 返回大写的字符
LOWER() 返回小写的字符
select UPPER('Abc');
select LOWER('Abc');
mysql> select UPPER('Abc');
+--------------+
| UPPER('Abc') |
+--------------+
| ABC |
+--------------+
1 row in set (0.00 sec)mysql> select LOWER('Abc');
+--------------+
| LOWER('Abc') |
+--------------+
| abc |
+--------------+
1 row in set (0.00 sec)
空格函数
LTRIM() 左边去掉空格
TRIM() 去掉空格
RTRIM() 右边去掉空格
SPACE() 返回指定长度的空格
如果中间有空格需要去掉,可以使用replace
-- 去掉左边、两端、右边的空格
select ltrim(' abc def '),trim(' abc def '),rtrim(' abc def ');
-- 将abcd从字符串中剔除
select trim('abcd' from 'abcdefghia');
-- 将a从字符中剔除
select trim('a' from 'abcdefghia');
-- 返回10个空格
select SPACE(10);
mysql> -- 去掉左边、两端、右边的空格
mysql> select ltrim(' abc def '),trim(' abc def '),rtrim(' abc def ');
+--------------------+-------------------+--------------------+
| ltrim(' abc def ') | trim(' abc def ') | rtrim(' abc def ') |
+--------------------+-------------------+--------------------+
| abc def | abc def | abc def |
+--------------------+-------------------+--------------------+
1 row in set (0.00 sec)mysql> -- 将abcd从字符串中剔除
mysql> select trim('abcd' from 'abcdefghia');
+--------------------------------+
| trim('abcd' from 'abcdefghia') |
+--------------------------------+
| efghia |
+--------------------------------+
1 row in set (0.00 sec)mysql> -- 将a从字符中剔除
mysql> select trim('a' from 'abcdefghia');
+-----------------------------+
| trim('a' from 'abcdefghia') |
+-----------------------------+
| bcdefghi |
+-----------------------------+
1 row in set (0.00 sec)mysql> -- 返回10个空格
mysql> select SPACE(10);
+------------+
| SPACE(10) |
+------------+
| |
+------------+
1 row in set (0.00 sec)
连接函数
CONCAT() 连接字符串
CONCAT_WS() 指定分隔符连接字符串
语法:
CONCAT(str1,str2,…)
CONCAT_WS(separator,str1,str2,…)
-- concat可以带一个或多个参数
select concat('a','b','c');
select concat('a','b','c','d');-- 如需要使用分隔符连接,比较麻烦
select concat('a','-','b','-','c','-','d');
-- 当遇到空字符的时候也不好处理
select concat('a','-',null,'-','c','-','d');-- 此时可以使用concat_ws
select concat_ws('-','a','b','c','d');
select concat_ws('-','a',null,'c','d');
mysql> -- concat可以带一个或多个参数
mysql> select concat('a','b','c');
+---------------------+
| concat('a','b','c') |
+---------------------+
| abc |
+---------------------+
1 row in set (0.00 sec)mysql> select concat('a','b','c','d');
+-------------------------+
| concat('a','b','c','d') |
+-------------------------+
| abcd |
+-------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 如需要使用分隔符连接,比较麻烦
mysql> select concat('a','-','b','-','c','-','d');
+-------------------------------------+
| concat('a','-','b','-','c','-','d') |
+-------------------------------------+
| a-b-c-d |
+-------------------------------------+
1 row in set (0.00 sec)mysql> -- 当遇到空字符的时候也不好处理
mysql> select concat('a','-',null,'-','c','-','d');
+--------------------------------------+
| concat('a','-',null,'-','c','-','d') |
+--------------------------------------+
| NULL |
+--------------------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 此时可以使用concat_ws
mysql> select concat_ws('-','a','b','c','d');
+--------------------------------+
| concat_ws('-','a','b','c','d') |
+--------------------------------+
| a-b-c-d |
+--------------------------------+
1 row in set (0.00 sec)mysql> select concat_ws('-','a',null,'c','d');
+---------------------------------+
| concat_ws('-','a',null,'c','d') |
+---------------------------------+
| a-c-d |
+---------------------------------+
1 row in set (0.00 sec)
字符长度函数
CHAR_LENGTH() 返回字符个数
LENGTH() 返回字节个数
-- 默认字符集是UTF8 1个汉字3个字节-- 如果字符都是英文,则输出结果一致
select char_length('abc');
select length('abc');-- 如果字符中包含中文,则输出结果不一致
select length('张三');
select char_length('张三');
mysql> -- 如果字符都是英文,则输出结果一致
mysql> select char_length('abc');
+--------------------+
| char_length('abc') |
+--------------------+
| 3 |
+--------------------+
1 row in set (0.00 sec)mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)mysql>
mysql> -- 如果字符中包含中文,则输出结果不一致
mysql> select length('张三');
+------------------+
| length('张三') |
+------------------+
| 6 |
+------------------+
1 row in set (0.00 sec)mysql> select char_length('张三');
+-----------------------+
| char_length('张三') |
+-----------------------+
| 2 |
+-----------------------+
1 row in set (0.00 sec)
字符截取函数
SUBSTR() 截取字符
SUBSTRING_INDEX() 截取字符
INSTR() 字符出现位置函数
LEFT()
RIGHT()
语法:
SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len)
SUBSTRING_INDEX(str,delim,count)
INSTR(str,substr)
LEFT(str,len)
RIGHT(str,len)
-- 字符截取,从第5位开始截,len没有值,表示截取到最后
select substr('abcdefghi',5);-- 字符截取,从第5位开始截,截取2个字符
select substr('abcdefghi',5,2);-- 字符截取,从第-5位开始截,截取2个字符
select substr('abcdefghi',-5,2);-- '.'第一次出现的地方,保留左边的
select substring_index('www.mysql.com','.',1);-- '.'最后一次出现的地方,保留右边的
select substring_index('www.mysql.com','.',-1);-- '.'出现的位置
select instr('www.mysql.com','.');-- 从左边开始截取5个字符
select left('www.mysql.com',5);-- 从右边开始截取5个字符
select right('www.mysql.com',5);
mysql> -- 字符截取,从第5位开始截,len没有值,表示截取到最后
mysql> select substr('abcdefghi',5);
+-----------------------+
| substr('abcdefghi',5) |
+-----------------------+
| efghi |
+-----------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 字符截取,从第5位开始截,截取2个字符
mysql> select substr('abcdefghi',5,2);
+-------------------------+
| substr('abcdefghi',5,2) |
+-------------------------+
| ef |
+-------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 字符截取,从第-5位开始截,截取2个字符
mysql> select substr('abcdefghi',-5,2);
+--------------------------+
| substr('abcdefghi',-5,2) |
+--------------------------+
| ef |
+--------------------------+
1 row in set (0.00 sec)mysql>
mysql>
mysql>
mysql> -- '.'第一次出现的地方,保留左边的
mysql> select substring_index('www.mysql.com','.',1);
+----------------------------------------+
| substring_index('www.mysql.com','.',1) |
+----------------------------------------+
| www |
+----------------------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- '.'最后一次出现的地方,保留右边的
mysql> select substring_index('www.mysql.com','.',-1);
+-----------------------------------------+
| substring_index('www.mysql.com','.',-1) |
+-----------------------------------------+
| com |
+-----------------------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- '.'出现的位置
mysql> select instr('www.mysql.com','.');
+----------------------------+
| instr('www.mysql.com','.') |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 从左边开始截取5个字符
mysql> select left('www.mysql.com',5);
+-------------------------+
| left('www.mysql.com',5) |
+-------------------------+
| www.m |
+-------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 从右边开始截取5个字符
mysql> select right('www.mysql.com',5);
+--------------------------+
| right('www.mysql.com',5) |
+--------------------------+
| l.com |
+--------------------------+
1 row in set (0.00 sec)
字符串填充函数
LPAD() 在左边填充指定内容
RPAD() 在右边填充指定内容
语法
LPAD(str,len,padstr)
RPAD(str,len,padstr)
SELECT LPAD('hi',4,'??');
SELECT LPAD('hi',1,'??');SELECT RPAD('hi',4,'??');
SELECT RPAD('hi',1,'??');
mysql> SELECT LPAD('hi',4,'??');
+-------------------+
| LPAD('hi',4,'??') |
+-------------------+
| ??hi |
+-------------------+
1 row in set (0.00 sec)mysql> SELECT LPAD('hi',1,'??');
+-------------------+
| LPAD('hi',1,'??') |
+-------------------+
| h |
+-------------------+
1 row in set (0.00 sec)mysql>
mysql>
mysql> SELECT RPAD('hi',4,'??');
+-------------------+
| RPAD('hi',4,'??') |
+-------------------+
| hi?? |
+-------------------+
1 row in set (0.00 sec)mysql> SELECT RPAD('hi',1,'??');
+-------------------+
| RPAD('hi',1,'??') |
+-------------------+
| h |
+-------------------+
1 row in set (0.00 sec)
其它常用字符函数
LIKE 匹配字符函数
QUOTE() 屏蔽字符串中的转移字符
REPEAT() 重复字符
REPLACE() 替换字符
REVERSE() 反转字符
语法:
QUOTE(str)
REPEAT(str,count)
REPLACE(str,from_str,to_str)
REVERSE(str)
-- 测试数据
create table t(name varchar(20));
insert into t values ('abc'),('ABC'),('def'),('abcdef'),('aaa');-- 匹配a开头的,默认的情况下不区分大小写
select * from t where name like 'a%';-- 匹配a结尾的
select * from t where name like '%a%';
mysql> -- 匹配a开头的,默认的情况下不区分大小写
mysql> select * from t where name like 'a%';
+--------+
| name |
+--------+
| abc |
| ABC |
| abcdef |
| aaa |
+--------+
4 rows in set (0.00 sec)mysql>
mysql> -- 匹配a结尾的
mysql> select * from t where name like '%a%';
+--------+
| name |
+--------+
| abc |
| ABC |
| abcdef |
| aaa |
+--------+
4 rows in set (0.00 sec)
-- quote输出完整的支付
select 'abc\.def' as col1,quote('abc\.def') as col2;-- 重复字符3吃
SELECT REPEAT('MySQL', 3);-- 将w替换为Ww
SELECT REPLACE('www.mysql.com', 'w', 'Ww');-- 反转支付
SELECT REVERSE('abc');
mysql> -- quote输出完整的支付
mysql> select 'abc\.def' as col1,quote('abc\.def') as col2;
+---------+-----------+
| col1 | col2 |
+---------+-----------+
| abc.def | 'abc.def' |
+---------+-----------+
1 row in set (0.00 sec)mysql>
mysql> -- 重复字符3吃
mysql> SELECT REPEAT('MySQL', 3);
+--------------------+
| REPEAT('MySQL', 3) |
+--------------------+
| MySQLMySQLMySQL |
+--------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 将w替换为Ww
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
+-------------------------------------+
| REPLACE('www.mysql.com', 'w', 'Ww') |
+-------------------------------------+
| WwWwWw.mysql.com |
+-------------------------------------+
1 row in set (0.00 sec)mysql>
mysql> -- 反转支付
mysql> SELECT REVERSE('abc');
+----------------+
| REVERSE('abc') |
+----------------+
| cba |
+----------------+
1 row in set (0.00 sec)mysql>
相关文章:
MySQL入门篇-MySQL常用字符函数小结
备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊常见的字符函数 函数名函数用途UPPER()返回大写的字符LOWER()返回小写的字符LTRIM()左边去掉空格TRIM()去掉空格RTRIM()右边去掉空格SPACE()返回指定长度的空格CONCAT()连接字符串CONCAT_WS()指定分隔符连接字符串CHAR_LEN…...

解决不同影像裁剪后栅格数据行列不一致问题
前言在处理栅格数据时,尽管用同一个矢量文件裁剪栅格数据,不同数据来源的栅格行列数也会出现不一致的情况。如果忽略或解决不好,会导致后续数据处理出现意想不到的误差或错误,尤其是利用编程实现数据处理时。因此,应当…...

visual studio2022配置opencv
标题:在vs下配置使用opencv 流程: 1、下载安装opencv 2、添加环境变量 3、vs中配置属性 4、使用 5、可能遇到的报错和解决 1、 下载安装opencv 官网下载地址: https://opencv.org/releases/ 我这里是windows环境,所以选择点击w…...

什么是销售管理?销售管理的五大职能
销售管理听起来很简单,似乎只是负责销售并确保客户满意,但事实上,它远不止于此。 销售管理的实际职能包括监督销售团队的工作,制定计划和设定目标,通常还包括确保销售流程的效率以获得最佳业务结果。 什么是销售管理…...

[CVPR‘22] EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks
paper: https://nvlabs.github.io/eg3d/media/eg3d.pdfproject: EG3D: Efficient Geometry-aware 3D GANscode: GitHub - NVlabs/eg3d总结: 本文提出一种hybrid explicit-implicit 3D representation: tri-plane hybrid 3D representation,该方法不仅有…...

Learning C++ No.9【STL No.1】
引言: 北京时间:2023/2/13/18:29,开学正式上课第一天,直接上午一节思想政治,下午一节思想政治,生怕我们……,但,我深知该课的无聊,所以充分利用时间,把我的小…...

Apifox推荐-django后台验证token配置
最近事情很多,但是我还是想写一片推荐apifox的文章。 优秀的UI,清晰地逻辑,丰富的功能。对于我们这种业余选手来说,他真的很便利。 更新新版后有了更多贴心的功能,让你感觉他是一个有温度的工具。 最重要的是…...

SAS应用入门学习笔记6
SQL (SAS): Features: 1)不需要在每个query中重复调用每个SQL; 2)每个statement都是独立去完成的; 3)我们是没有proc print和proc sort语句的;(order by) key synta…...

【3D目标检测】Pseudo-Stereo for Monocular 3D Object Detection in Autonomous Driving
目录概述细节背景与整体流程图像级别生成特征级别生成损失函数学习深度感知的特征概述 本文是基于单目图像的3D目标检测方法。 【2021】【MonoDLE】 研究的问题: 能否借助立体图像检测算法提高单目图像检测的效果如何实现右侧图像的生成 解决的方法: 受启发于伪…...
git 常用命令之 git branch
大家好,我是 17。 新建 git 分支 分支是并行开发的基础。分支名称的本质是对分支最后一个提交的引用。分支有多个,但 HEAD 只有一个,可以认为 HEAD 是"current branch"(当下的分支)。当你用git switch切换分支的时候,…...
Oracle数据泵
Oracle 数据泵:概览 作为一个基于服务器的用于高速移动数据与元数据的工具, Oracle 数据泵具有以下特点: •可通过 DBMS_DATAPUMP 调用 •可提供以下工具: – expdp – impdp – 基于 Web 的界面 •提供四种数据移动方法ÿ…...

ACWING寒假每日一题python
ACWING寒假每日一题 一、孤独的照片 一个点一个点的来看,比如对于GHGHG中间的G,找到他的左边的G,以及右边的G的位置,l,r分别等于1,答案就要多加上11 但是如果对于 GHHGHHG 中间的G,我们可以看到l,r等于2&a…...

御黑行动来袭--助力三月重保,构筑安全防线!
三月重保在即,重要网站及业务系统“零风险 零事故”是终极目标,作为业界网络安全实战派“老兵”--知道创宇将一如既往,为您提供重保期间“万无一失”的重要网站及业务系统防护。 值此三月重保的重要备战期,知道创宇推出由主力产品…...
JavaScript HTML DOM 元素 (节点)
HTML DOM 是指 HTML 文档对象模型,它是一种用于创建和处理 HTML 页面的标准 API。在 JavaScript 中,HTML DOM 可以被用来操作和修改网页的内容和结构。在本篇文章中,我们将详细探讨 JavaScript HTML DOM 元素 (节点)的作用以及在实际工作中的…...

mybatis-plus ---2
mybatis-plus插件 官网地址 分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 配置并使用自带分页插件 Configuration MapperScan("com.itzhh.mapper")//可以将主类中的注解移到此处 public class MybatisPlusConfig {Beanpublic …...

如何在Qt中设置背景图片,且不覆盖其它控件
正常情况,我们直接通过在样式表里设置背景图片会出现背景图片覆盖其它控件的情况,比如下面操作: 首先右击空白处,点击改变样式表。 然后选择background-image 然后点击铅笔图标 之后我们要先添加前缀,也就是我们…...
PMP考前冲刺2.14 | 2023新征程,一举拿证
承载2023新一年的好运让我们迈向PMP终点一起冲刺!一起拿证!每日5道PMP习题助大家上岸PMP!!!PMP项目管理题目1-2:1.公司了解到一个项目机会,领导让之前做过类似项目的项目经理报告一个粗略的成本…...

feign进行文件上传报错解决方案及有多个入参时的注意事项
一、情景回顾1、简单的文件上传的接口/*** 文件上传MultipartFile格式** param multipartFile 源文件* param filename 自定义文件名称,允许为空,为空时直接从源文件中拿* return*/RequestMapping("/uploadFileForMultipartFile")LogModuleAnn…...
java 枚举类型enum的用法详解
Java Enum原理 public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE }; 实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要构造新对象。 因此,在比较两个枚举类型的值时,永远不需要调用equals方法…...

Java 基础面试题——关键字
目录1.Java 中的关键字是指什么?有哪些关键字?2.instanceof 关键字的作用是什么?3.访问修饰符 public、private、protected、以及不写(default)时的区别?4.Java 中有没有 goto 关键字?5.在 Java 中&#x…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...