【问题标题】:Mysql: extract number from stringMysql:从字符串中提取数字
【发布时间】:2019-01-04 16:16:22
【问题描述】:

您好,我在表中有一个序列化的列: 如果数组中只有一个数字,我想要数组中的最后一个数字。

  • a:1:{s:7:"general";s:6:"666423";}
  • a:1:{s:7:"general";s:5:"36624";}
  • a:1:{s:7:"general";s:12:"36628, 36624";}
  • a:1:{s:7:"general";s:5:"36601";}
  • a:1:{s:7:"general";s:4:"9847";}
  • a:1:{s:7:"general";s:3:"444";}
  • a:1:{s:7:"general";s:2:"56";}
  • a:1:{s:7:"general";s:1:"7";}

预期输出 -

  • 666423
  • 36624
  • null(如果有多个数字我不想提取)
  • 36601
  • 9847
  • 444
  • 56
  • 7

在这种情况下,哪个字符串函数最有效?

【问题讨论】:

  • 你为什么不直接反序列化这些值呢?存储序列化字符串会破坏数据库规范化,因此如果您需要使用此列执行数据库操作,您肯定会遇到问题。
  • 好点。但是,技术团队不提供此选项。我在数据团队中需要处理表格中给出的内容。
  • 考虑从“序列化”切换到更标准的 JSON。然后使用新版本的 mysql/mariadb 中可用的 json 函数。

标签: mysql regex replace split substring


【解决方案1】:

你可以利用总是以相同方式结束的序列化格式,先使用reverse+locate-function来获取字符串,然后查看它是否包含多个值。

SQLFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 2021-11-27
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多