Mysql 温故知新系列「字符串函数(left, regexp_replace, substring)」

447 阅读2分钟

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

left

left(str, length)

left 会返回字符串左边指定长度的部分。当 str 或者 length 为 null,则返回值为 null;当 length <= 0 返回空字符串

如果 length > str.length 则返回实际的字符串

reverse

reverse(str)

反转指定的字符串,emmm,暂时举例不出他的使用场景

image.png

replace

替换字符串中和指定子串相等的部分(没找到则不处理)

replace(str, oldStr, newStr)

image.png

有这么个场景,我们检查数据库的时候,发现有部分数据的格式没有统一,比如,相关字段上,中英文的小括号混用,或者是某个外键专属名词大小写混用, 我们希望统一,则可以使用如下示例的sql

update set name = replace(name, '(弃用)', '(弃用)') from table;
update set name = replace(name, 'dome', 'Demo') from table

regexp_replace

字符串替换操作 plus 版本!支持正则表达式!这让我们对字符串的处理变得更加灵活(当然,前提是你需要会使用)

image.png

额外来点真实的,mysql 的 where 查询也是支持正则表达式的。相比于常规的全等、大小于、以及模糊查询,这正则查询可谓是降维打击

image.png

substring

substring(str, FROM position [FOR length]);

从字符串指定下标的位置开始,返回一个给定长度的子字符串。FROM 表示子字符串开始的下标位置,FOR 表示子字符串的长度,如果这一段省略,则会直接返回到字符串的结尾

这里的下标计算,是从 1 开始!!!且表示是子字符串开始的位置!

image.png

单纯的从指定位置截取到字符串尾

image.png

这里则表示子串从 3 开始,并限定长度为 2


原创文章,未经允许,禁止转载

-- by 安逸的咸鱼