我正在使用 mySql 中的房地产数据库。这是与 wordpress 站点一起使用的。 列出的每个属性在连接表中都有相关代理。一处特性可能有不止一位代理人。 但是,单个字段中列出了多个代理。 (因此,加入是 1-1)。 这是一个例子
a:2:{i:0;s:4:"1995";i:1;s:3:"260";}
所以看起来这是某种数组实现。我对此没有太多经验,因为无论如何这都是将数据存储在关系数据库中的一种糟糕方法。
在此示例中,有 2 个代理。
我知道:
- 第一个“2”可能是指代理人的数量。
- "1995"和 "260"是代理记录的record-ids。
我将如何编写 SQL 语句以从 php 中提取这两个记录 ID(并在主记录中查找相关数据)?
如果这是一个麻烦的解决方案,我想创建一个新的 SQL View 以使访问更容易。这可能吗?
如果有的话,我找不到任何解释这个字段的 php 函数。
表重新设计不是一种选择。
编辑:
当我阅读所指出的类似问题的答案时,我得出的结论是这很可能是不可能的。坦率地说是荒谬的。
解决方案需要重复使用 SUBSTRING_INDEX。多少次,每次都可能不同。即使指定了值的数量,在 MySQL 中也可能无法完成。我将不得不应对由此产生的限制。
最佳答案
你说的数据格式是php's serialization format .在 JSON 接管世界之前,Rasmus Lerdorf 和 php 的创建者想出了他们自己的实现方式。
WordPress 使用了很多这样的东西。
php's unserialize()
function将其从该字符串表示形式转换为适当的 php 对象。
如果必须,您可以使用 MySQL string functions喜欢LOCATE()和 SUBSTRING()从那些序列化的字符串中提取某些值。但这将是一个巨大的痛苦,而且对于序列化的对象类型来说非常具体。
关于php - 如何解析 mySql 表的单个字段中的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056268/