热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL函数学习笔记二:字符函数_MySQL

1计算字符串字符数和字符串长度
1. 计算字符串字符数和字符串长度 - CHAR_LENGTH(s)

CHAR_LENGTH(str): 返回str所包含的字符个数。

mysql> select CHAR_LENGTH('MySQL');

+----------------------+

| CHAR_LENGTH('MySQL') |

+----------------------+

| 5 |

+----------------------+

2. 合并字符 - CONCAT(s1,s2,...) 与 CONCAT_WS(x,s1,s2,...)

CONCAT(s1,s2,...):回结果为连接参数产生的字符串,或许有一个或者多个参数。如果有任何一个返回值为NULL, 则返回值为NULL.

mysql> select CONCAT('MySQL',' ','5.5',' ',NULL,'Function');

+-----------------------------------------------+

| CONCAT('MySQL',' ','5.5',' ',NULL,'Function') |

+-----------------------------------------------+

| NULL |

+-----------------------------------------------+

CONCAT_WS(x,s1,s2,...): 代表CONCAT With Separator, 是CONCAT的特殊形式。第一个参数X是其它参数的分隔符,分隔符的位置在要连接的字符串之间。分隔符可以是一个字符串,也可是其他参数。如果分隔符为NULL,则结果为NULL。

mysql> select CONCAT_WS('.','David','Tian'), CONCAT_WS(NULL,'MySQL','5.5');

+-------------------------------+-------------------------------+

| CONCAT_WS('.','David','Tian') | CONCAT_WS(NULL,'MySQL','5.5') |

+-------------------------------+-------------------------------+

| David.Tian | NULL |

+-------------------------------+-------------------------------+

3. 替换字符串函数 - INSERT(s1, x, len, s2)

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

mysql> select INSERT('Softtekian',2,4,'!@#$') AS c1,

-> INSERT('Softtekian',-1,4,'@@@@') as c2,

-> INSERT('Softtekian',3,100,'$$') as c3,

-> INSERT('Softtekian',2,4,'%@') as c4;

+------------+------------+------+----------+

| c1 | c2 | c3 | c4 |

+------------+------------+------+----------+

| S!@#$ekian | Softtekian | So$$ | S%@ekian |

+------------+------------+------+----------+

4. 字母大小写转换函数- LOWER(s), LCASE(s), UPPER(s), UCASE(s)

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

mysql> select LOWER('MySQL and Oracle ASM') as c1, LCASE('Database Administrator') as c2;

+----------------------+------------------------+

| c1 | c2 |

+----------------------+------------------------+

| mysql and oracle asm | database administrator |

+----------------------+------------------------+

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

mysql> select UPPER('sunshine.ma') c1,UCASE('Sunshine.Ma') c2;

+-------------+-------------+

| c1 | c2 |

+-------------+-------------+

| SUNSHINE.MA | SUNSHINE.MA |

+-------------+-------------+

5. 获取指定长度字符串:LEFT(s,n), RIGHT(s,n)

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

mysql> select LEFT('this is a testing email',7) as c1;

+---------+

| c1 |

+---------+

| this is |

+---------+

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

mysql> select RIGHT('this is a testing email',7) as c1;

+---------+

| c1 |

+---------+

| g email |

+---------+

6. 填充字符串函数:LPAD(s1, len, s2), RPAD(s1, len, s2)

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

mysql> select LPAD('Hello',4,'%%') as c1, LPAD('Hello',10,'*') as c2;

+------+------------+

| c1 | c2 |

+------+------------+

| Hell | *****Hello |

+------+------------+

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

mysql> select RPAD('Hello',4,'%') as c1, RPAD('Hello',10,'*') as c2;

+------+------------+

| c1 | c2 |

+------+------------+

| Hell | Hello***** |

+------+------------+

7. 删除空格字符串函数:LTRIM(s), RTRIM(s), TRIM(s)

LTRIM(s): 返回字符串s,字符串左侧空格字符被删除。
mysql> select LTRIM(' book ') as c1;

+---------+

| c1 |

+---------+

| book |

+---------+

RTRIM(s): 返回字符串s,字符串右侧空格字符被删除。
mysql> select RTRIM(' book ') as c1;

+---------+

| c1 |

+---------+

| book |

+---------+

TRIM(s): 返回字符串s,字符串两侧空格字符被删除。

mysql> select TRIM(' book ') as c1;
+------+
| c1 |
+------+
| book |
+------+

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

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

mysql> select TRIM(' boook ') as c1, TRIM('xy' FROM 'xyxyDxyDxyxy') as c2;

+-------+------+

| c1 | c2 |

+-------+------+

| boook | DxyD |

+-------+------+

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

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

mysql> select REPEAT(&#39;abc&#39;,3) as c1, REPEAT(&#39;abc&#39;,-1) as c2, REPEAT(&#39;abc&#39;,NULL) as c3;

+-----------+------+------+

| c1 | c2 | c3 |

+-----------+------+------+

| abcabcabc | | NULL |

+-----------+------+------+

10. 空格函数:SPACE(n)

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

mysql> select CONCAT(&#39;(&#39;,SPACE(6),&#39;)&#39;) AS c1, CHAR_LENGTH(SPACE(6)) AS C2;

+----------+----+

| c1 | C2 |

+----------+----+

| ( ) | 6 |

11. 替换函数:REPLACE(s,s1,s2)

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

mysql> select REPLACE(&#39;xxx.mysql.com&#39;,&#39;x&#39;,&#39;w&#39;) as c1;

+---------------+

| c1 |

+---------------+

| www.mysql.com |

12. 比较字符串大小函数:STRCMP(s1,s2)

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

mysql> select STRCMP(&#39;txt&#39;,&#39;txta&#39;) as c1, STRCMP(&#39;txta&#39;,&#39;txt&#39;) as c2, STRCMP(&#39;txt&#39;,&#39;txt&#39;) as c3;

+----+----+----+

| c1 | c2 | c3 |

+----+----+----+

| -1 | 1 | 0 |

+----+----+----+

13. 字符串截取函数:SUBSTRING(s,n,len), MID(s,n,len)

SUBSTRING(s,n,len):从字符串s返回一个长度为len的子字符串,起始位置为n。若n为负数,则子字符串的位置起始于字符串结尾的n个字符,即倒数第n个字符。若len省略,则取至结尾。

mysql> select SUBSTRING(&#39;breaskfast&#39;,5) as c1,

-> SUBSTRING(&#39;breaskfast&#39;,5,3) as c2,

-> SUBSTRING(&#39;breakfast&#39;,-3) as c3,

-> SUBSTRING(&#39;breakfast&#39;,-5,3) as c4;

+--------+-----+-----+-----+

| c1 | c2 | c3 | c4 |

+--------+-----+-----+-----+

| skfast | skf | ast | kfa |

+--------+-----+-----+-----+

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

mysql> select MID(&#39;breaskfast&#39;,5) as c1, MID(&#39;breaskfast&#39;,5,3) as c2, MID(&#39;breakfast&#39;,-3) as c3, MID(&#39;breakfast&#39;,-5,3) as c4;+--------+-----+-----+-----+

| c1 | c2 | c3 | c4 |

+--------+-----+-----+-----+

| skfast | skf | ast | kfa |

+--------+-----+-----+-----+

14. 匹配子串开始位置函数:LOCATE(s1,s2), POSITION(s1 IN s2), INSTR(s2,s1)

LOCATE(s1,s2): 返回子字符串s1在字符串s2中的开始位置。

POSITION(s1 IN s2): 返回子字符串s1在字符串s2中的开始位置。

INSTR(s2,s1):返回子字符串s1在字符串s2中的开始位置。

mysql> select LOCATE(&#39;ball&#39;,&#39;football&#39;) c1,

-> POSITION(&#39;ball&#39; IN &#39;football&#39;) c2,

-> INSTR(&#39;football&#39;,&#39;ball&#39;) c3;

+----+----+----+

| c1 | c2 | c3 |

+----+----+----+

| 5 | 5 | 5 |

+----+----+----+

15. 字符串逆序函数:REVERSE(s)

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

mysql> select REVERSE(&#39;I love you&#39;) as c1;

+------------+

| c1 |

+------------+

| uoy evol I |

+------------+

16. 返回指定位置的字符串函数:ELT(n,s1,s2,s3,...,Sn)

ELT(n,s1,s2,s3,...,Sn): 若n=1,则返回字符串S1,若n=2,则返回字符串S2,依此类推。若n小于1或大于参数的数目,则返回值为NULL。

mysql> select ELT(3,&#39;1st&#39;,&#39;2nd&#39;,&#39;3rd&#39;) as c1, ELT(3,&#39;oracle&#39;,&#39;MySQL&#39;) as c2;

+------+------+

| c1 | c2 |

+------+------+

| 3rd | NULL |

+------+------+

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

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

mysql> select FIELD(&#39;Hi&#39;,&#39;hihi&#39;,&#39;Hey&#39;,&#39;Hi&#39;,&#39;bas&#39;,&#39;ciao&#39;) as c1, FIELD(&#39;Hi&#39;,&#39;Hey&#39;,&#39;Lo&#39;,&#39;Hilo&#39;,&#39;foo&#39;) as c2;

+----+----+

| c1 | c2 |

+----+----+

| 3 | 0 |

+----+----+

18. 返回子串位置的函数:FIND_IN_SET(s1,s2)

FIND_IN_SET(s1,s2): 返回字符串s1在字符串s2中出现的位置,字符串列表是一个由多个逗号“,”分开的字符串组成的列表。如果s1不在s2中或s2为空字符串,则返回0。如果任何一个参数为NULL,则返回值为NULL。S1中不能包含一个逗号“,”。

mysql> select FIND_IN_SET(&#39;Hi&#39;,&#39;hihi,Hey,Hi,bas&#39;) as c1;

+----+

| c1 |

+----+

| 3 |

+----+

19. 选取字符串的函数:MAKE_SET(x,s1,s2,...)

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

mysql> select MAKE_SET(1,&#39;a&#39;,&#39;b&#39;,&#39;c&#39;) as c1, MAKE_SET(1|4,&#39;hello&#39;,&#39;nice&#39;,&#39;world&#39;) as c2, MAKE_SET(1|4,&#39;hello&#39;,&#39;nice&#39;,NULL,&#39;world&#39;) as c3, MAKE_SET(0,&#39;a&#39;,&#39;b&#39;,&#39;c&#39;) as c4;

+----+-------------+-------+----+

| c1 | c2 | c3 | c4 |

+----+-------------+-------+----+

| a | hello,world | hello | |

+----+-------------+-------+----+

说明:

1的二进制值为0001, 4的二进制值为0100,1和4进行或操作之后的二进制值为0101,从右到左第1位和第3位为1。

MAKE_SET(1,’a’,’b’,’c’): 返回第1个字符串;

MAKE_SET(1|4,&#39;hello&#39;,&#39;nice&#39;,&#39;world&#39;):返回从左端开始第1和第3个字符组成的字符串;

MAKE_SET(1|4,&#39;hello&#39;,&#39;nice&#39;,NULL,&#39;world&#39;):NULL值不会添加到结果中,因此只会返回第一个字符串;

MAKE_SET(0,&#39;a&#39;,&#39;b&#39;,&#39;c&#39;): 返回空字符串。

如果您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,非常感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处,否则追究法律责任,后果自负!

推荐阅读
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的间隙锁概念及其作用,探讨了它在解决幻读问题方面的关键角色,并解析了间隙锁与其他操作之间的冲突关系。同时,文章还讨论了next-key-lock的构成及应用,以及在不同场景下的优化策略。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • 本文详细介绍如何下载并安装MySQL数据库(5.7.10版本),以及配置Navicat管理工具(免费版)。通过本指南,您将了解从下载到安装的完整流程,并掌握基本的数据库管理技能。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文探讨了在处理大量物联网设备时,如何合理设计关系型数据库来高效记录设备的上下线历史,确保数据的可维护性和扩展性。 ... [详细]
  • MySQL 用户创建失败的解决方案
    本文详细介绍了在 MySQL 中遇到用户创建失败问题时的解决方法,包括如何正确配置环境、执行命令以及常见错误排查技巧。通过逐步指导,帮助用户顺利添加和管理 MySQL 用户。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
author-avatar
hgsfaerqw_504
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有