Mysql 温故知新系列「字符串函数(concat, concat_ws, length, char_length)」

「这是我参与11月更文挑战的第 16 天,活动详情查看:2021最后一次更文挑战

字符串函数

mysql 不仅提供了辅助聚合记录的操作,同时也提供了对字符串的拼接、截取、替换等常规的字符操作

concat

concat() 接收一个或多个字符串参数,最后会将他们拼接在一起,变成一个字符串在返回、但是,倘若其中任意一个参数为 null 则整个字符串都会返回为 null

image.png

image.png

在示例中,我们,如果需要在多个字符之间插入分隔符,则需要将分隔符当作一个普通的字符传参,mysql 中为我们提供了一个强化版的字符拼接函数: concat_ws

concat_ws

concat_ws(seperator,string1,string2, ... ),接收多个参数,第一个是分隔符,必填,从第二个开始,就是我们需要拼接的字符串,这个函数会自动的在多个参数之间插入指定的分隔符

image.png

这里换一张表演示 concat_ws 对空字符数据的处理

image.png

如图,如果连接的字符中存在有空数据,concat_ws 并不会将整个结果作为 null 返回,仅仅是忽略掉那个空的字符

length

以字节为单位,获取字符串的长度,在 mysql 中,不同的字符编码,会占据不同的不同个数的字节长度,比如我们最习惯使用的 utf8 需要占据 3 个字节,以及在 mysql8 往后中出现的最多的 utf8mb4 占据了 4 个字节

我们可以使用 show character set; 来查看当前 mysql 支持的字符集以及他们的需要的字节数

image.png

题归正传,在 mysql 中,utf8 编码下的中文字符,会占据 3 个字节

image.png

char_length

length 相比,char_length 最大的区别就是按字符进行统计,即他不关心字符编码,单纯的统计字符的个数

image.png

举个例子,我们做了一个自愿付费的站点,需要吸引人点击但又不想被人直接吧资源爬去了,需要对文章的内容做定长截取,这个实现现在有两种方案,①在后台做;②直接在数据库处理好,后台代码都不需要动,配合上 mybaits 的 xml 形式的 sql,改了直接部署,简单极了

猜你喜欢

转载自juejin.im/post/7031173992085979149