mysql字段截取的几种函数和搭配函数示例代码
作者:小垃圾运维
在 MySQL 数据库中,有时我们需要截取字段或字符串的一部分进行查询、展示或处理,下面这篇文章主要介绍了mysql字段截取的几种函数和搭配函数的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
一、substr函数
-- 函数的语法 -- substring函数与substr函数一样 SUBSTR(str,position,length); SUBSTR(str from position for length);
- str:需要截取的字符串,支持嵌套
- position:截取的起始位置(索引从1开始,负数表示从末尾倒序计数,需MySQL 8.0+支持)
- length:是可选参数;截取字符串的长度(若为负数则返回空值)
-- 从position开始截取至末尾 SUBSTR(str,position) SUBSTR(str FROM position) -- 从position开始截取length长度 SUBSTR(str,position,length) SUBSTR(str FROM position FOR length)
二、SUBSTRING_INDEX
功能:按分隔符截取字符串特定部分,支持正向/逆向计数
-- 语法 SUBSTRING_INDEX(str, delim, count)
参数解析:
- str:原始字符串或字段
- delim:分隔符(支持多字符)
- count:
正数:从左往右截取前count个分隔符左侧内容
负数:从右往左截取前abs(count)个分隔符右侧内容
-- 经典案例 SELECT SUBSTRING_INDEX('www.jb51.net', '.', 2); -- 结果:'www.jb51' SELECT SUBSTRING_INDEX('100-200-300', '-', -1); -- 结果:'300' SELECT SUBSTRING_INDEX('a|b|c', '|', 3); -- 结果:'a|b|c'(超出分隔符总数时返回完整字符串)
三、LEFT/RIGHT
功能:从字符串左/右侧截取固定长度子串。
-- 语法: LEFT(str, length) RIGHT(str, length)
参数:
- str:原始字符串
- length:截取长度(需≥0,否则返回空值;若=0,返回空字符串)
四、LOCATE、instr、position
功能:返回子字符串首次出现的位置,未查询到结果返回0
-- 语法 LOCATE(substr, str , start_pos) -- instr函数中参数区分大小写,可以结合lower/upper共同 INSTR(str, substr) -- 可读性高 POSITION(substr IN str)
参数:
- substr:待查找的子字符串
- str:原始字符串
- start_pos:起始搜索位置(可以不填,默认值1)
五、获取json字符串里面的指定值
1、JSON_EXTRACT()
-- 语法: JSON_EXTRACT(json_doc, path)
参数说明:
- json_doc:JSON类型字段名或JSON字符串
- path:JSON路径表达式(以$开头,支持.和[]访问对象/数组)
-- 提取JSON对象中的cusId字段 SELECT JSON_EXTRACT(zt.follow_up_source, '$.cusId') FROM table_name; -- 提取数组第一个元素的name字段(索引从0开始) SELECT JSON_EXTRACT('[{\"name\":\"John\"},{\"name\":\"Jane\"}]', '$[0].name');
2、JSON_UNQUOTE()
功能:移除JSON_EXTRACT返回值的引号,将JSON字符串转为普通文本
SELECT JSON_UNQUOTE(JSON_EXTRACT(info, '$.name')) FROM users WHERE id=1; -- 等效简写:->>运算符(MySQL 5.7+支持) SELECT info->>'$.name' FROM users;
MySQL 5.7+、mariadb10.2.0+:支持基础JSON函数
总结
到此这篇关于mysql字段截取的几种函数和搭配函数的文章就介绍到这了,更多相关mysql字段截取函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!