大道至简,知易行难
广阔天地,大有作为

MySQL字符串分割

在MySQL中没有字符串分割函数功能,但可以通过巧妙地使用不同的字符串函数来实现。假设有如下的表:

和数据:

要分割的字符串

要分割的字符串

假设我们要查询此表并将街道信息拆分为多列,那么可以使用MySQL中的SUBSTRING_INDEX函数:

然而,这种结果是有问题的:

MySQL中错误的字符串分割

MySQL中错误的字符串分割

显然,street2和street3的分割结果是错误的。如果我们仔细阅读MySQL文档,那么会注意到SUBSTRING_INDEX返回的是分隔符左侧的所有内容。 如果我们想要获取分隔符第一次和第二次出现之间的字符串,那么可以通过将street2和street3包装在另一个SUBSTRING_INDEX中来进行:

这样就基本上差不多似乎正确的了。但是,street3返回的值与street2仍然是不对的:

MySQL中错误的字符串分割2

MySQL中错误的字符串分割2

这是因为这一条个街道信息只有两行,如果要正确处理那么就需要使用IF语句来控制SUBSTRING_INDEX:

虽然这个查询有点复杂了,但是对于那些必须在SQL中执行所有操作而无法使用代码来处理查询的情况还是非常有用的:

正确的分割结果

正确的分割结果

假设我们想分割如下的字符串:

要使用|分割的示例数据

要使用|分割的示例数据

那么可以使用:

按|分割后的结果

按|分割后的结果

参考资料:
1、https://coderwall.com/p/zzgo-w/splitting-strings-with-mysql

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » MySQL字符串分割

分享到:更多 ()

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    mysql5.7以后支持json格式,设计上会尽可能采用

    昵称5年前 (2020-03-19)回复
    • 您说的没错,不过这篇讨论的是如何去分割字符串哟,O(∩_∩)O

      mlkui5年前 (2020-03-20)回复