SQL的substring_index()用法实例(MySQL字符串截取)

 更新时间:2023年01月13日 09:35:15   作者:小白修炼晋级中  
substring_index (字符串,分隔符,序号),主要作用是用于截取目标字符串,下面这篇文章主要给大家介绍了关于SQL中substring_index()用法(MySQL字符串截取)的相关资料,需要的朋友可以参考下

1.substring_index函数的语法及其用法

(1)语法:substring_index(string,sep,num)

即substring_index(字符串,分隔符,序号)

参数说明

string:用于截取目标字符串的字符串。可为字段,表达式等。

sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。

num:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。比如“www.mysql.com”截取字符‘www’,分割符为“.”,从左到右序号为1,即substring_index("www.mysql.com",'.',1);若从右开始获取“com”则为序号为-1即substring_index("www.mysql.com",'.',-1)

(2)用于截取目标字符串。

2.实例

(1)从某字段截取目标字符串。

例:现有一个学生信息表student,详细地址address储存省、市、县等由逗号隔开的地址信息,比如“XX省,XX市,XX区,...,XXX号”。由于某种原因没有学生所在省信息需要获取,同时获取学生姓名name,性别sex,年龄age。

select name,sex,age,
substring_index(address,',',1) as province
from student

(2)与cast函数结合使用截取某字符串并转为目标格式。

例:现有一张订单信息data,由于2022-03-04日期 之后存储日期信息的格式出错,日期前加了一些前缀,并用空格隔开,比如“13d 2022-02-01”,需要获取该表2022-03-04之后具体日期信息,同时获取单子offer_id,以及产品名name。

select cast(substring_index(ctime,' ',1) as date) as dt,
offer_id,name    
FROM data
WHERE substring_index(ctime,' ',1)>= '2022-03-04'

附:结合group_concat(),把多条记录回显到一条,再做分割

比如一个用户可以维护多条学历信息记录,现在这个人维护了一所本科院校,俩所研究生院校,一所博士院校,现需要展示最高的一个学校,或者需要展示出所有的研究生院校。

/*研究生毕业院校*/
IF(
    SUBSTRING_INDEX(
        GROUP_CONCAT( 
            CASE 
            WHEN a02.R0205 = '11' //表示研究生
                THEN a02.R0203 
                ELSE ',' 
            END 
            ORDER BY a02.R0205, a02.R0206 
        ),
        ',',
        2
    ) = ','  // 如果没有
    ,'',     // 返回空,否则,返回下面语句
    SUBSTRING_INDEX(
        GROUP_CONCAT( 
            CASE 
            WHEN a02.R0205 = '21' 
                THEN a02.R0203 
            END 
            ORDER BY a02.R0205, a02.R0206 
        ),
    ',',
    2)
) AS dxbyyx,

结果:

中国人民大学,清华大学

SQL的cast函数用法可参考SQL的CAST()——转换数据类型

总结

到此这篇关于SQL的substring_index()用法的文章就介绍到这了,更多相关SQL substring_index()用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细谈谈MYSQL中的COLLATE是什么

    详细谈谈MYSQL中的COLLATE是什么

    mysql COLLATE是校对集的意思,可以理解为,排序规则等,下面这篇文章详细的给大家介绍了关于MYSQL中COLLATE是什么的相关资料,需要的朋友可以参考下
    2021-06-06
  • MySQL常用登录命令小结

    MySQL常用登录命令小结

    本文主要介绍了MySQL常用登录命令小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

    MySQL数据库安全秘籍之守护数据金库防火防盗防攻击

    MySQL是许多公司和组织的关键数据库,因此其安全性的重要性如此显而易见,为了确保MySQL的安全性,需要采取多种措施来增强其安全性,本文给大家介绍MySQL数据库安全秘籍之守护数据金库防火防盗防攻击,感兴趣的朋友一起看看吧
    2023-03-03
  • Spark SQL常见4种数据源详解

    Spark SQL常见4种数据源详解

    这篇文章主要介绍了Spark SQL常见4种数据源(详细),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • 基于Mysql+JavaSwing的超市商品管理系统设计与实现

    基于Mysql+JavaSwing的超市商品管理系统设计与实现

    本项目是使用Java swing开发,可实现超市管理系统商品列表信息查询、添加商品信息和修改商品管理以及删除商品信息和安装商品信息查询等功能。界面设计和功能比较简单基础、适合作为Java课设设计以及学习技术使用,需要的朋友可以参考一下
    2021-09-09
  • mysql5.7.19 zip 详细安装过程和配置

    mysql5.7.19 zip 详细安装过程和配置

    本文详细给大家介绍了mysql5.7.19 zip 详细安装过程和配置,感兴趣的朋友一起看看吧
    2017-10-10
  • MySQL 中  DATE_FORMAT() 函数的使用及应用场景

    MySQL 中  DATE_FORMAT() 函数的使用及应用场景

    DATE_FORMAT() 是 MySQL 中的一个内置函数,用于格式化日期和时间数据,它可以根据指定的格式字符串来展示日期和时间,使得数据更容易阅读和理解,本文档将详细介绍 DATE_FORMAT() 函数的使用方法及其常见应用场景,感兴趣的朋友一起看看吧
    2024-12-12
  • mysql如何查询两个日期之间最大的连续登录天数

    mysql如何查询两个日期之间最大的连续登录天数

    在现在的很多网站中都有这样一个功能。记录用户的连续登陆天数,所谓的连续在线是指相邻两天都登录过,不一定一直在线,但是只要有过登录即可。这篇文章主要介绍的是利用sql语句如何查询在两个日期之间最大的连续登录天数,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全

    MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全

    这篇文章主要介绍了MySQL5.7.14下载安装详细教程及MySQL数据库语句入门大全的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • MySQL中索引的优化的示例详解

    MySQL中索引的优化的示例详解

    索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。本文主要来讲讲索引优化的方法,希望对大家有所帮助
    2023-02-02

最新评论