昨天,咱们对MySQL的数学函数进行了讲解,今天,咱们再来解析MySQL字符串函数。

字符串函数主要用来处理数据库中的字符串数据,MySQL中字符串函数有:计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数、查找指定字符串位置函数等。

本篇将介绍各种字符串函数的功能和用法。

计算字符串字符数的函数和字符串长度的函数

CHAR_ LENGTH(str)返回值为字符串str 所包含的字符个数。一个多字节字符算作-一个单字符。

使用CHAR_ LENGTH函数计算字符串字符个数,输入语句如下:

LENGTH(str)返回值为字符串的字节长度,使用utf8 (UNICODE的一种变 长字符编码,又称万国码)编码字符集时,一个汉字是3个字节,一个数字或字母算一个字节。

使用LENGTH函数计算字符串长度,输入语句如下:

可以看到,计算的结果与CHAR_ LENGTH相同,因为英文字符的个数和所占的字节相同,一个字符占一个字节。

合并字符串函数CONCAT(s1 ,2…… CONCAT_ WS(x,1,2……)

CONCAT(1,2,*.)返回结果为连接参数产生的字符串,或许有一个或多个参数。如有任何一个参数为NULL,则返回值为NULL。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任- -二进制字符串,则结果为一个二进制字符串。

使用CONCAT函数连接字符串,输入语句如下:

CONCAT(My SQL, '5.7)返回两个字符串连接后的字符串; CONCAT(My',NULL, 'SQL)中有一个参数为NULL,因此返回结果为NULL。

CONCAT _WS(x,1,2,*.),CONCAT_ WS代表CONCAT With Separator, 是CONCATO的特殊形式。第一个参数x是其他参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。

使用CONCAT _WS函数连接带分隔符的字符串,输入语句如下:

CONCAT_ WS(-', 'Ist,'2nd', '3rd")使用分隔符‘-’ 将3个字符串连接成-一个字符串,结果为“1st-2nd-3rd” ; CONCAT_ WS(*', 'Ist', NULL, '3rd")使用分隔符‘*’将两个字符串连接成一个字符串,同时忽略NULL值。

替换字符 串的函数INSERT(s1,x,len,s2)

INSERT(s1,x,len,s2)返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符。如果x超过字符串长度,则返回值为原始字符串。假如len的长度大于其他字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL。

使用INSERT函数进行字符串替代操作,输入语句如下:

第一个函数INSERT(Quest', 2, 4, 'What)将“Quest”第2个字符开始长度为4的字符串替换为What,结果为“QWhat" ;第二个函数INSERT(Quest, -1, 4, 'What)中起始位置-1超出了字符串长度,直接返回原字符;第三个函数INSERT(Quest, 3, 100, 'What)替换长度超出了原字符串长度,则从第3个字符开始,截取后面所有的字符,并替换为指定字符What,结果为“QuWhat”。

字母大小写转换函数

LOWER (str)或者LCASE (str)可以将字符串str 中的字母字符全部转换成小写字母。

使用LOWER函数或者LCASE函数将字符串中所有字母字符转换为小写,输入语句如下:

由结果可以看到,原来所有字母为大写的,全部转换为小写,如“BEAUTIFUL",转换之后为“beautiful”;大小写字母混合的字符串,小写不变,大写字母转换为小写字母,如“WelL”,转换之后为“well”

UPPER(str)或者UCASE(str)可以将字符串str中的字母字符全部转换成大写字母。

使用UPPER函数或者UCASE函数将字符串中所有字母字符转换为大写,输入语句如下:

由结果可以看到,原来所有字母字符为小写的,全部转换为大写,如“balck”,转换之后为“BLACK”;大小写字母混合的字符串,大写不变,小写字母转换为大写字母,如“BLacK”,转换之后为“BLACK”。

获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)

LEFT(s,n)返回字符串s开始的最左边n个字符。

使用LEFT函数返回字符串中左边的字符,输入语句如下:

函数返回字符串“football”左边开始的长度为5的子字符串,结果为“footb”

RIGHT(s,n)返回字符串中最右边n个字符。

使用RIGHT函数返回字符串中右边的字符,输入语句如下:

函数返回字符串“football” 右边开始的长度为4的子字符串,结果为“ball" 。

填充字符串的函数LPAD(s1 ,len,s2)和RPAD(s1,len,s2)

LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填补到len字符长度。假如s1的长度大于len,则返回值被缩短至len字符。

使用LPAD函数对字符串进行填充操作,输入语句如下:

字符串“hello” 长度大于4,不需要填充,因此LPAD(hello' ,??)只返回被缩短的长度为4的子串“hell”;字符串“hello” 长度小于10, LPAD('heell',10,??)返回结果为“????hello”,左侧填充‘? ’,长度为10。

RPAD(s1,len,s2)返回字符串sl,其右边被字符串s2填补至len字符长度。假如字符串s1的长度大于len,则返回值被缩短到len字符长度。

使用RPAD函数对字符串进行填充操作,输入语句如下:

字符串“hello” 长度大于4,不需要填充,因此RPAD('ello'4,?)只返回被缩短的长度为4的子串“hell”;字符串“hello”长度小于10, RPAD('hello',10,"?)返回结果为"hell????”,右侧填充‘?’,长度为10。

删除空格的函数 LTRIM(s)、RTRIM(s)和 TRIM(s)

LTRIM(s)返回字符串s,字符串左侧空格字符被删除。

使用LTRIM函数删除字符串左边的空格,输入语句如下:

LTRIM只删除字符串左边的空格,而右边的空格不会被删除,“book ”删除左边空格之后的结果为“book”。

RTRIM(s)返回字符串s,字符串右侧空格字符被删除。

使用RTRIM函数删除字符串右边的空格,输入语句如下:

RTRIM只删除字符串右边的空格,左边的空格不会被删除,“book ”删除右边空格之后的结果为“book”

TRIM(s)删除字符串s两侧的空格。

使用TRIM函数删除字符串两侧的空格,使用语句如下:

可以看到,函数执行之后字符串“book”两边的空格都被删除,结果为“book”。

删除指定字 符串的函数TRIM(s1 FROM s)

TRIM(s1 FROM s)删除字符串s中两端所有的子字符串s1os1为可选项,在未指定情况下,删除空格。

使用TRIM(s1 FROM s)函数删除字符串中两端指定的字符,输入语句如下:

删除字符串“xyxboxyokxxyxy"两端的重复字符串“xy”,而中间的“xy”并不删除,结果为“xboxyokx",

重复生成字符串的函数REPEAT(s,n)

REPEAT(s,n)返回一个由重复的字符串s组成的字符串,字符串s的数目等于n。若n<=0,则返回一个空字符串。若s或n为NULL,则返回NULL。

使用REPEAT函数重复生成相同的字符串,输入语句如下:

REPEAT(MySQL', 3)函数返回的字符串由3个重复的“MySQL"字符串组成。

空格函数SPACE(n)和替换函数REPL ACE(s,s1,s2)

SPACE(n)返回一个由n个空格组成的字符串。

使用SPACE函数生成由空格组成的字符串,输入语句如下:

SPACE(6)返回的字符串由6个空格组成。

REPLACE(s,s1,s2)使用字符串s2替代字符串s中所有的字符串sl。

使用REPLACE函数进行字符串替代操作,输入语句如下:

REPLACE(xx.MySQL.com', 'x, 'w')将“xx.mysql.com"字符串中的‘x’ 字符替换为‘w’字符,结果为mysql.com

比较字符串大小的函数STRCMP(s1,s2)

STRCMP(1,2)若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1,其他情况返回1。

使用STRCMP函数比较字符串大小,输入语句如下:

“txt”小于“txt2” ,因此STRCMP('txt', 'txt2)返回结果为-1,STRCMP('txt2', 'txt)返回结果为1;“txt” 与“txt”相等,因此STRCMP('txt', 'txt)返回结果为0。

获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len)

SUBSTRING(,n,len)带有len参数的格式,从字符串s返回一个长度同len字符相同的子字符串,起始于位置n。也可能对n使用-一个负值。假若这样,则子字符串的位置起始于字符串结尾的n字符,即倒数第n个字符,而不是字符串的开头位置。

使用SUBSTRING函数获取指定位置处的子字符串,输入语句如下:

SUBSTRING(breakfast,5)返回从第5个位置开始到字符串结尾的子字符串,结果为“kfast”; SUBSTRING(breakfat,5,3)返回从第 5个位置开始长度为3的子字符串,结果为“kfa”; SUBSTRING(lunch', -3)返回从结尾开始第3个位置到字符串结尾的子字符串,结果为“nch” ; SUBSTRING('lunch', -5, 3)返回从结尾开始第5个位置,即字符串开头起,长度为3的子字符串,结果为“lun”

MID(s,n,len)与SUBSTRING(s,n,len)的作用相同。

使用MID()函数获取指定位置处的子字符串,输入语句如下:

可以看到MID和SUBSTRING的结果是一样的。

匹配子串开始位置的函数

LOCATE(str1,str)、POSITION(str1 IN str)和INSTR(str, str1)3 个函数作用相同,返回子字符串str1在字符串str中的开始位置。

使用LOCATE,POSITION, INSTR函数查找字符串中指定子字符串的开始位置,输入语句如下:

子字符串“ball" 在字符串“foball"中从第5个字母位置开始,因此3个函数返回结果都为5。

字符串逆序的函数REVERSE(s)

REVERSE(s)将字符串s反转,返回的字符串的顺序和s字符串顺序相反。

使用REVERSE函数反转字符串,输入语句如下:

可以看到,字符串“abc”经过REVERSE函数处理之后所有字符串顺序被反转,结果为“cba”。

返回指定位置的字符串的函数

ELT(N,字符串1,字符串2,字符串....字符串N)若N= 1,则返回值为字符串1,若N=2,

则返回值为字符串2,以此类推。若N小于1或大于参数的数目,则返回值为NULL。

使用ELT函数返回指定位置字符串,输入语句如下:

由结果可以看到,ELT(3,'1st,2nd','3rd)返回第 3个位置的字符串“3rd" ;指定返回字符串位置超出参数个数,返回NULL。

返回指定字 符串位置的函数FIELD(s,s1,s2,.*)

FIELD(s,1,2,-)返回字符串s在列表sl,2,...中第一次出现的位置,在找不到s的情况下,返回值为0。如果s为NULL,则返回值为0,原因是NUL不能同任何值进行同等比较。

使用FIELD函数返回指定字符串第-次出现的位置,输入语句如下:

FIELD(Hit, "hihi', 'Hey', 'Hi', 'bas')函数中字符串“Hi”出现在列表的第3个字符串位置,因此返回结果为3; FIELD(Hi', 'Hey', 'Lo', 'Hilo','foo)列表中没有字符串 “Hi”,因此返回结果为0。

返回子串位置的函数FIND_ IN_ SET(s1,s2)

FIND_ IN SET(S1,s2)返回字符串s1在字符串列表s2中出现的位置,字符串列表是一个个由多个逗号‘,’ 分开的字符串组成的列表。如果s1不在s2或s2为空字符串,则返回值为0。

如果任意一个参数为NULL,则返回值为NULL。这个函数在第一个参 数包含一个逗号‘,’时将无法正常运行。

使用FIND_ IN_ SETO函数返回子字符串在字符串列表中的位置,输入语句如下:

虽然FIND_ IN_ SET()和 FIELD()两个函数格式不同,但作用类似,都可以返回指定字符串在字符串列表中的位置。

选取字符串的函数MAKE_ SET(x,s1,2,-*)

MAKE_ SETx.,1,2,-)返回由x的二进制数指定的相应位的字符串组成的字符串,s1对应比特1,s2 对应比特01,以此类推。s1, 2..中的NULL值不会被添加到结果中。

使用MAKE_ SET根据二进制位选取指定字符串,输入语句如下:

1的二进制值为0001, 4的二进制值为0100,1与4进行或操作之后的二进制值为0101,从右到左第1位和第3位为1。MAKE_ SET(,a';b;')返回第1个字符串: SET(1|4,hell','nice',world')返回从左端开始第1和第3个字符串组成的字符串; NULL不会添加到结果中,因此SET(1 | 4,ello'nice',NULL'world)只返回第1个字符串‘ hello' ; SETQ,a';b;')返回空字符串。

今天整理的内容比较多,朋友们可以先收藏后再慢慢阅读,能够帮助大家更好的学习,就是小编最大的愿望。

喜欢小编请多多点赞评论转发,关注小编,你们的支持就是小编最大的动力!!!

mysql函数编写格式_MySQL函数基础——字符串函数详解相关推荐

  1. mysql数据库的字符串表示什么意思_MySQL数据库的字符串类型详解(01)

    Mysql的数据类型主要分为三类:数字类型.字符串(字符)类型.日期和时间类型,由于时间紧迫,根据学习的需要 数字类型暂不做详解,等待有时间了在修改此文档,此文主要介绍mysql 数据类型中的字符串类 ...

  2. mysql数据库杀掉堵塞_Mysql解决USE DB堵塞详解

    遇到故障,我们往往想的是如何解决这个故障,而不是从故障的根本去思考出现这个故障的原因?这样的结果,只能使我们得到了鱼,失去了渔.今天,我们就来分享一个由USE DB堵塞故障引发的思考案例. 故障描述 ...

  3. mysql 配置自动截断_MySql超长自动截断实例详解

    MySql超长自动截断实例详解 小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的? 如下 CREATE TABLE `p_app ...

  4. mysql 超长 java 问题_MySql超长自动截断实例详解

    MySql超长自动截断实例详解 小伙伴问到一个问题,为啥在项目中调用插入或者更新语句时超长的字无法自动截断,而在navicat中直接执行是可以自动截断的? 如下 CREATE TABLE `p_app ...

  5. mysql的存储过程原理_mysql存储过程原理与用法详解

    本文实例讲述了Mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018- ...

  6. mysql的更新用法_mysql update语句的用法详解

    本节内容: mysql数据库中的update语句. 首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr ...

  7. mysql数据表操作_MySQL数据表基本操作实例详解

    本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...

  8. mysql 二叉树表设计_Mysql 索引模型 B+ 树详解

    一.认识二叉树 首先,在了解 mysql 中的 B+ 树之前,我们需要搞懂什么是二叉树.二叉树是一种常见的非线形数据结构,数据是以一对多的形态组织起来的,我画了一张图来帮助你理解: 在二叉树中,有一种 ...

  9. mysql 秒杀 隔离级别_MySQL 四种隔离级别详解,看完吊打面试官

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...

最新文章

  1. 最好用浏览器_魔镜魔镜,请你告诉我谁是Mac上最好用的浏览器?--全网最好用的12个功能让你玩转Safari...
  2. idea 升级到2020后 无法启动_i.MXRT软复位后无法从32MB Flash启动?
  3. The POM for com.ruifeng.tjtaxiqy:shiro:jar:0.0.1-SNAPSHOT is missing, no dependency information avai
  4. java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积
  5. 怎样用原生js配合css的transition写个无缝滚动
  6. java实现123n_java三线程交替打印123……n
  7. c语言getchar函数_C语言中带有示例的getchar()函数
  8. 获取所有汉字与 Unicode 的对照表
  9. [leetcode]62. 不同路径
  10. python数据容器专题
  11. 什么是依赖,什么是抽象
  12. mysql重复执行命令_mysql----------mysql的一些常用命令
  13. 安全培训教程之------利用IIS写权限漏洞
  14. 电脑桌面图标右上角出现计算机名称如何取消,电脑桌面上的图标名称怎么清除不显示?...
  15. 开发在线投票系统过程遇到的问题
  16. 计算机毕业设计Java车辆调度管理系统(源码+系统+mysql数据库+lw文档
  17. Unity用代码写一个Inspector里面能拉动的滑条
  18. 海外社交媒体最佳图片尺寸
  19. 错误:没有找到合适的设备:没有找到可用于链接System eth0 的设备
  20. 关于xxl-job终止任务但程序没有停止的问题

热门文章

  1. 推荐图灵出版社的图书
  2. 云计算+大数据+深度学习+人工智能+量子计算=?
  3. 【Android-Service】基于MVP的音乐播放器demo实现思路(附源码)
  4. 1000左右 笔记本 linux,降价1000 易PC900 30G Linux版本只要2999元
  5. CSDN博文待审核状态避免及解决方法
  6. 【新版发布】ComponentOne 新增 .NET 6 和 Blazor 平台控件支持
  7. 计算机安全协议是,计算机通信网安全协议的分析研究
  8. 计算机丢失Uxteme,xp系统开机显示uxtheme.dll丢失的恢复教程
  9. Ubuntu 安装PIXMA IP1180打印机
  10. pubmed影响因子插件_科研干货 | Scholarscope在新版PubMed中实现基于影响因子的文献筛选...