在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql 有很多字符串函数可以用来处理这些需求,如 Mysql 字符串截取总结:left()、right()、substring()、substring_index()。
一. 从 左开始截取字符串
用法:left(str, length),即:left(被截取字符串,截取长度)
SELECT LEFT('www.yuanrengu.com',8);
结果为:www.yuan
二. 从 右开始截取字符串
用法:right(str, length),即:right(被截取字符串,截取长度)
SELECT RIGHT('www.yuanrengu.com',6);
结果为:gu.com
三. 截取 特定长度 的字符串
用法:
- substring(str, pos),即:substring(被截取字符串,从第几位开始截取)
- substring(str, pos, length),即:substring(被截取字符串,从第几位开始截取,截取长度)
1. 从字符串的第 9 个字符开始读取直至结束
SELECT SUBSTRING('www.yuanrengu.com', 9);
结果为:rengu.com
2. 从字符串的第 9 个字符开始,只取 3 个字符
SELECT SUBSTRING('www.yuanrengu.com', 9, 3);
结果为:ren
3. 从字符串的倒数第 6 个字符开始读取直至结束
SELECT SUBSTRING('www.yuanrengu.com', -6);
结果为:gu.com
4. 从字符串的倒数第 6 个字符开始读取,只取 2 个字符
SELECT SUBSTRING('www.yuanrengu.com', -6, 2);
结果为:gu
四. 按关键字进行读取
用法:substring_index(str, delim, count),即:substring_index(被截取字符串,关键字,关键字出现的次数)
1. 截取第二个“.”之 前的所有字符
SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', 2);
结果为:www.yuanrengu
2. 截取倒数第二个“.”之 后的所有字符
SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', -2);
结果为:yuanrengu.com
3. 如果关键字不存在,则返回整个字符串
SELECT SUBSTRING_INDEX('www.yuanrengu.com', 'sprite', 1);
结果为:www.yuanrengu.com