【发布时间】: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