「这是我参与11月更文挑战的第 18 天,活动详情查看:2021最后一次更文挑战」
trim
常规用于删除数据的前后空格,使用的方式为 trim(str)
如果需要删除前后指定的字符串,其格式为 trim(remstr FROM str)
此外 trim 还提供一个参数来限定删除 【前+后|前|后】 的指定字符串
ltrim/rtrim
如果我们的需求仅仅是删除字符串前面(或者后面)的空格,可以使用 mysql 中对 trim
封装的简化函数 ltrim(str), rtrim(str)
trim(leading ' ' from str) ==> ltrim(str)
trim(trailing ' ' from str) ==> rtrim(str)
复制代码
find_in_set
find_in_set(str, strList)
复制代码
当字符串是以 ,
分割的数据列表,即这个字符串可以根据 ,
切割得到一个列表数据,在这种情况下,可以使用 find_in_set
查询一个子字符串是否在那个列表中,在则返回数字下标(从 1 开始)如果没有找到,则返回 0
format
通常,我们在查询中使用了聚合函数 avg
去计算平均值,很有可能得到一个小数,有的时候要求这个值需要保留几位小数,以及将数按千分位隔开
format(N, D, local)
复制代码
N
表示需要处理的值,D
表示保留几位小数,local
表示语音区域,默认为 en_US
,即数格式化后的效果为 xx,xxx,xxx.xx
lcase/ucase
mysql 中可以提供了对字符串进行大小写转化的函数:
lcase
字符串转小写ucase
字符串转大写
SELECT lcase('AAA');
--> aaa
SELECT ucase('aaa');
--> AAA
复制代码
repeat
SELECT repeat(str, n)
复制代码
将字符串 str
重复 n
次后返回
lpad/rpad
在字符串的左边或右边填充指定字符,使这个字符串的长度达到指定的长度
最常见的场景,我们需要生成定长的流水号,比如,流水号格式限定5位,位数不够用 0
填充。
一种偷懒的方案就是,我最高位直接从 1
开始,这样就不会存在开头位数不够的情况
另一种方法就是使用 mysql 提供的 lpad
lpad(str, length, repeatStr);
rpad(str, length, repeatStr);
复制代码
str
需要处理的字符,length
表示处理后的字符长度,repeatStr
表示用来填充的字符
现在来一个角度刁钻的,比如我给 1
用 abc
填充到 5 位,这又是怎么填充的呢?
如测试所示,直接循环使用字符串 abc
进行填充,填充足够的位数后就终止