「这是我参与11月更文挑战的第 16 天,活动详情查看:2021最后一次更文挑战」
字符串函数
mysql 不仅提供了辅助聚合记录的操作,同时也提供了对字符串的拼接、截取、替换等常规的字符操作
concat
concat()
接收一个或多个字符串参数,最后会将他们拼接在一起,变成一个字符串在返回、但是,倘若其中任意一个参数为 null
则整个字符串都会返回为 null
在示例中,我们,如果需要在多个字符之间插入分隔符,则需要将分隔符当作一个普通的字符传参,mysql 中为我们提供了一个强化版的字符拼接函数: concat_ws
concat_ws
concat_ws(seperator,string1,string2, ... )
,接收多个参数,第一个是分隔符,必填,从第二个开始,就是我们需要拼接的字符串,这个函数会自动的在多个参数之间插入指定的分隔符
这里换一张表演示 concat_ws
对空字符数据的处理
如图,如果连接的字符中存在有空数据,concat_ws
并不会将整个结果作为 null
返回,仅仅是忽略掉那个空的字符
length
以字节为单位,获取字符串的长度,在 mysql 中,不同的字符编码,会占据不同的不同个数的字节长度,比如我们最习惯使用的 utf8
需要占据 3 个字节,以及在 mysql8
往后中出现的最多的 utf8mb4
占据了 4 个字节
我们可以使用 show character set;
来查看当前 mysql 支持的字符集以及他们的需要的字节数
题归正传,在 mysql 中,utf8
编码下的中文字符,会占据 3 个字节
char_length
与 length
相比,char_length
最大的区别就是按字符进行统计,即他不关心字符编码,单纯的统计字符的个数
举个例子,我们做了一个自愿付费的站点,需要吸引人点击但又不想被人直接吧资源爬去了,需要对文章的内容做定长截取,这个实现现在有两种方案,①在后台做;②直接在数据库处理好,后台代码都不需要动,配合上 mybaits 的 xml 形式的 sql,改了直接部署,简单极了