前一篇文章总结了下MySQL中常用的数学函数,本文接下来的重点就是认识“字符串函数”。

上图这匹漂亮的马儿就是通过各种字符(字母、括号、逗号、竖线等)画出来的。我不由自主地会去想下面几个问题:
- 它到底有多少个字符?--字符串长度
- 它里面的小写字母改成大写后视觉效果如何?--大小写转换
- 有些地方的空格去掉会如何?--去掉空格符
- 某些地方插入一些其他字符?--填充字符
- 找到某个特定字符的位置?--匹配字符位置
- ……
当然每个人可以各自发挥想象。但不管问多少问题,我们最终都要看看字符串函数是否能解决--这就是学习的目的所在!
人生,何尝不是一个面对问题与找答案的循环往复的过程啊!

【1】计算字符串字符数:CHAR_LENGTH(str)
【规则】返回字符串str中所包含的字符的个数。

【结论】一个英文字母和一个汉字都算作一个字符。
【2】计算字符串长度:LENGTH(str)
【规则】计算str的长度。

【结论】英文字母与汉字的字符长度计算规则不一样。
【3】字母大小写 转换
- LOWER(str)或LCASE(str)可以将str转化为小写字母;
- UPPER(str)或UCASE(str)可以将str转化为大写字母。

【4】删除空格函数
- 删除左侧空格:LTRIM(str)
- 删除右侧空格:RTRIM(str)
- 删除两端空格:TRIM(str)

【5】填充字符串函数:LPAD(s1,len,s2)
【规则】该函数返回字符串s1,其左侧由字符串s2填充,填充的长度为len。如果s1的长度大于len,则返回值被缩短至len个字符。

【结论】
- s1的长度大于len,则从s1从左侧开始截取len个字符作为返回值;
- s1与s2的长度之和小于等于len,则将s2插入s1左侧后全部返回;
- s1与s2的长度之和大于len,则将s2从左侧开始截取len-length(s1)个数插入s1左侧后作为返回值。
【6】获取指定长度的字符
- LEFT(str,len):返回字符串str最左边的len个字符;
- RIGHT(str,len):返回字符串str最由边的len个字符。

【7】替换字符串的函数:INSERT(s1,x,len,s2)
【规则】返回字符串s1,s1中起始于x位置、长度为len的子字符串将被s2取代。
如果x超过字符串长度,则返回值为s1;如果len的长度大于x位置后字符串的总长度,则从位置x开始替换。若任何一个参数为NULL,则返回值必定为NULL。

【结论】x为负数也表示超出了字符串s1的长度。
总结
- 本文列举了7类函数;
- 所列举的函数解决了文章开头提出的5大问题;
- 还有一类重要的字符串函数--字符串合并或字符串拼接--留待有机会单独一篇文章来写。