-- 分割字符串
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(f.work_week_day, ',', help_topic_id + 1), ',', -1) AS weekDay
FROM finger AS f
JOIN mysql.help_topic 
ON help_topic_id < LENGTH(f.work_week_day) - LENGTH(REPLACE(f.work_week_day, ',' , '')) + 1

查询结果如下所示:

涉及的知识点:

1、字符串拆分: SUBSTRING_INDEX(str, delim, count)

  • str     需要拆分的字符串
  • delim     分隔符,通过某字符进行拆分
  • count     当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第                     n个分隔符之后的所有字符。

举例子

1)获取第2个以逗号为分隔符之前的所有字符

2)获取最后一个到倒数第2个以逗号分隔符之后的所有字符

所以,我们最开始的SQL中的 -1 ,就是获取以逗号为分隔符的最后一个值;也就是5

2、替换函数: REPLACE( str, from_str, to_str)

  • str       需要进行替换的字符串
  • from_str   需要被替换的字符串
  • to_str     需要替换的字符串

举例子

1)将分隔符逗号替换为空隔

3、获取字符串长度: LENGTH(str)

举例子

1)获取 '123,456,789,000'字符串的长度

本次利用 MySQL库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是自增的,当然也可以用其他表的自增字段辅助。

我们来看看其表结构:

其id为自增的

注意!! 这个辅助表的id最大长度只有642;如果过长的字符串,可能需要借助其他自增的辅助表(可以是现有表,也可以自己造一个 1,2,3,4 递增的行即可)

原理解析:

Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。

也就是代码段:

help_topic_id < LENGTH(f.work_week_day) - LENGTH(REPLACE(f.work_week_day, ',' , '')) + 1

下面我们来分步解析上面SQL

①截取第一段,得到字符串  ‘1,2,3,4,5’  的长度是9

②截取第二段,得到去除 ' , ' 后的字符串长度是5

9 - 5 = 4

说明什么?是不是说明有4个 逗号 ,那就说明有5个字符串需要被分割!

也就是 help_topic_id  < 5

因为help_topic_id也是从0开始的,也就是说help_topic_id 是 [ 0 1 2 3 4 ]

即:有5行数据

Step2:根据“,”逗号来拆分字符串,此处利用 SUBSTRING_INDEX(str, delim, count) 函数,最后把结果赋值给 weekDay字段。

也就是下面这段代码:

SUBSTRING_INDEX(SUBSTRING_INDEX(f.work_week_day, ',', help_topic_id + 1), ',', -1) AS weekDay

待截取的字符串:‘ 1,2,3,4,5

以”,”逗号为分隔符,根据 help_topic_id 的值来截取第n+1个分隔符之前所有的字符串。 (此处 n+1 是因为help_topic_id 是从0开始算起,而此处需从第1个分隔符开始获取。)

当 help_topic_id = 0时,获取到的字符串 = 1 
当 help_topic_id = 1时,获取到的字符串 = 1,2 
…(以此类推)

以”,”逗号为分隔符,截取倒数第1个分隔符之后的所有字符串。也就是最后一个数字:5

最终的效果也就是我们最开始看到的结果!

我们的要求是,把地址 字段 的中国去掉,并跟据地址 字段 来设置所属省份的(province_id) 字段 。 第一、替找 字符串 ,我们可以用 mysql 里的replace 这个用法,本博也有提到。详见:https://www.jb51.net/article/31374.htm好我们把 “中国” 这个字符给去掉。 update table set address = replace(address ,’中国’,”) 第二、要根据地址 字段 的开头字符并更新province_id 字段 、SQL语句如下 UPDATE table SET province_id=11 where LEFT(address,2)=’福 在做表关联查询时,需要把改 字符串 逗号 切割 ,来匹配权限表的id, 这不就是 切割 字符串 吗?博主微微一笑,简单! 先获取 字符串 ,返回String类型,用 java 的String.split(","); 切好后存入集合, 在xml里用<foreach></foreach> 功能是完成了但是非常辣 在 MySQL 数据库 中,有时我们需要 截取 字段 字符串 的一部分进行查询、展示或处理。本文将介绍 MySQL 中常用的 字段 截取 字符串 截取 方法,帮助你灵活处理数据。通过本文的介绍,你学习了在 MySQL 数据库 中进行 字段 截取 字符串 截取 的常用方法。你了解了如何使用 SUBSTRING() 函数来 截取 字段 字符串 的子串,以及如何使用 LEFT() 和 RIGHT() 函数来从 字符串 的左侧或右侧 截取 子串。根据实际需求,选择合适的方法和函数来 截取 字段 字符串 ,可以使你的查询和数据处理更加灵活和准确。 1. 字符串 截取 、拆分可以用于将用户输入的 字符串 按照 特定 的规则进行 截取 ,比如获取电话号码中的区号、手机号码中的前三位等等2. 逗号 分割 字符串 当做 in 的条件 逗号 分割的 字符串 可以作为分组数据的标识符,用于对数据进行分组和聚合操作3. 字符串 合并(多条数据合并 用'、'分割)将不同的用户id转换成用户名 然后用 、分隔显示在一个 字段 上, 例如不同的操作人。 转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的 字符串 拆分【0】需求 数据库 中 num 字段 值为: 实现的效果:需要将一行数据变成多行实现的SQLSELECTSUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) ... 本文介绍 MySQL 中如何进行 字符串 截取 相关操作,以及相关 截取 函数的使用,比如 left(), right(), substring(), substring_index()、 mid(), substr() select a.ID,a.DOCTORID, substring_index(substring_index(a.`KEY`,',',b.help_topic_id+1),',',-1) as key1 doctora... 将 字段 mername中的省市区(中国,吉林省,长春市,农安县)不更改 数据库 的情况下显示为(吉林省 长春市 农安县) 下面通过查询的sql解决 select replace(substring(cid.mername, 4, 99),',','') address from cp_city_dictionary cid where cid.id=220122 解释:replace(substring(cid.mername, 4, 99),',','') 一.substring(cid.m