开发者

mysql字段截取的几种函数和搭配函数示例代码

目录
  • 一、substr函数
  • 二、SUBSTRING_INDEX‌
  • 三、LEFT/RIGHT‌
  • 四、LOCATE‌、instr、position
  • 五、获取json字符串里面的指定值
    • 1、JSON_EXTRACT()
    • 2、JSON_UNQUOTE()
  • 总结 

    一、substr函数

    -- 函数的语法
    -- substring函数与substr函数一样
    SUBSTR(str,position,length);
    SUBSTR(str from position for length);
    
    • str:需要截取的字符串,支持嵌套
    • position:截取的起始位置(索引从1开始‌,负数表示从末尾倒序计数,需mysql 8.0+支持)
    • length:是可选参数;截取字符串的长度(若为负数则返回空AGZwYItDRs值)
    -- 从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); php  -- 结果:'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_EXTRACTjavascript(info, '$.name')) FRAGZwYItDRsOM users WHERE id=1;
    -- 等效简写:->>运算符(MySQL 5.7+支持)
    SELECT info->>'$.name' FROM users;
    

    MySQL 5.7+‌、mariadb10.2.0+:支持基础JSON函数

    总结 

    到此这篇关于mysql字段截取的几种函数和搭配函数的文章就介绍到这了,更多相关mysql字段截取函数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜