Mysql 字符串函数 详解
字符串函数是最常用的一种函数了,如果大家编写过程序的话,不妨回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数占已使用过的函数很大一部分。MySQL中字符串函数也是最丰富的一类函数,表5-1 中列出了这些函数以供参考。
下面通过具体的实例来逐个地研究每个函数的用法,需要注意的是这里的例子仅仅在于说明各个函数的使用方法,所以函数都是单个出现的,但是在一个具体的应用中通常可能需要综合几个甚至几类函数才能实现相应的应用。
CANCAT(S1,S2,…Sn)函数:把传入的参数连接成为一个字符串。
下面的例子把“aaa”、“bbb”、“ccc”3 个字符串连接成了一个字符串“aaabbbccc”。另外,任何字符串与NULL 进行连接的结果都将是NULL。
mysql> select concat('aaa','bbb','ccc') ,concat('aaa',null); +---------------------------+--------------------+ | concat('aaa','bbb','ccc') | concat('aaa',null) | +---------------------------+--------------------+ | aaabbbccc | NULL | +---------------------------+--------------------+ 1 row in set (0.05 sec)
INSERT(str ,x,y,instr)函数:将字符串str 从第x 位置开始,y 个字符长的子串替换为字符串instr。
下面的例子把字符串“beijing2008you”中的从第12 个字符开始以后的3 个字符替换成“me”。
mysql> select INSERT('beijing2008you',12,3, 'me') ; +-------------------------------------+ | INSERT('beijing2008you',12,3, 'me') | +-------------------------------------+ | beijing2008me | +-------------------------------------+ 1 row in set (0.00 sec)
LOWER(str)和UPPER(str)函数:把字符串转换成小写或大写。
在字符串比较中,通常要将比较的字符串全部转换为大写或者小写,如下例所示:
mysql> select LOWER('BEIJING2008'), UPPER('beijing2008'); +----------------------+----------------------+ | LOWER('BEIJING2008') | UPPER('beijing2008') | +----------------------+----------------------+ | beijing2008 | BEIJING2008 | +----------------------+----------------------+ 1 row in set (0.00 sec)
LEFT(str,x)和 RIGHT(str,x)函数:分别返回字符串最左边的x 个字符和最右边的x 个字符。如果第二个参数是NULL,那么将不返回任何字符串。
下例中显示了对字符串“beijing2008”应用函数后的结果。
mysql> SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4); +-----------------------+----------------------+------------------------+ | LEFT('beijing2008',7) | LEFT('beijing',null) | RIGHT('beijing2008',4) | +-----------------------+----------------------+------------------------+ | beijing | | 2008 | +-----------------------+----------------------+------------------------+ 1 row in set (0.00 sec)
LPAD(str,n ,pad)和 RPAD(str,n ,pad)函数:用字符串pad 对str 最左边和最右边进行填充,
直到长度为n 个字符长度。下例中显示了对字符串“2008”和“beijing”分别填充后的结果。
mysql> select lpad('2008',20,'beijing'),rpad('beijing',20,'2008'); +---------------------------+---------------------------+ | lpad('2008',20,'beijing') | rpad('beijing',20,'2008') | +---------------------------+---------------------------+ | beijingbeijingbe2008 | beijing2008200820082 | +---------------------------+---------------------------+ 1 row in set (0.00 sec)
LTRIM(str)和 RTRIM(str)函数:去掉字符串str 左侧和右侧空格。
下例中显示了字符串“beijing”加空格进行过滤后的结果。
mysql> select ltrim(' |beijing'),rtrim('beijing| '); +---------------------+------------------------+ | ltrim(' |beijing') | rtrim('beijing| ') | +---------------------+------------------------+ | |beijing | beijing| | +---------------------+------------------------+ 1 row in set (0.00 sec)
REPEAT(str,x)函数:返回str 重复x 次的结果。
下例中对字符串“mysql”重复显示了3 次。
mysql> select repeat('mysql ',3); +--------------------+ | repeat('mysql ',3) | +--------------------+ | mysql mysql mysql | +--------------------+ 1 row in set (0.00 sec)
REPLACE(str,a,b)函数:用字符串b 替换字符串str 中所有出现的字符串a。
下例中用字符串“2008”代替了字符串“beijing_2010”中的“_2010”。
mysql> select replace('beijing_2010','_2010','2008'); +----------------------------------------+ | replace('beijing_2010','_2010','2008') | +----------------------------------------+ | beijing2008 | +----------------------------------------+ 1 row in set (0.00 sec)
STRCMP(s1,s2)函数:比较字符串s1 和s2 的ASCII 码值的大小。如果s1 比s2 小,那么返回-1;
如果s1 与s2 相等,那么返回0;如果s1 比s2 大,那么返回1。如下例:
mysql> select strcmp('a','b'),strcmp('b','b'),strcmp('c','b'); +-----------------+-----------------+-----------------+ | strcmp('a','b') | strcmp('b','b') | strcmp('c','b') | +-----------------+-----------------+-----------------+ | -1 | 0 | 1 | +-----------------+-----------------+-----------------+ 1 row in set (0.00 sec)
TRIM(str)函数:去掉目标字符串的开头和结尾的空格。
下例中对字符串“ ”进行了前后空格的过滤。
mysql> select trim(' $ beijing2008 $ '); +-----------------------------+ | trim(' $ beijing2008 $ ') | +-----------------------------+ | $ beijing2008 $ | +-----------------------------+ 1 row in set (0.00 sec)
SUBSTRING(str,x,y)函数:返回从字符串str 中的第x 位置起y 个字符长度的字串。
此函数经常用来对给定字符串进行字串的提取,如下例所示。
mysql> select substring('beijing2008',8,4),substring('beijing2008',1,7); +------------------------------+------------------------------+ | substring('beijing2008',8,4) | substring('beijing2008',1,7) | +------------------------------+------------------------------+ | 2008 | beijing | +------------------------------+------------------------------+
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术