我正在使用mySql中的房地产数据库。与wordpress网站一起使用。 列出的每个属性在联接表中都有相关的代理。一个属性可能有多个代理。 但是,在一个字段中列出了多个代理。 (因此,join是1-1)。 这是一个例子
a:2:{i:0;s:4:"1995";i:1;s:3:"260";}
因此,这似乎是某种数组实现。我对此没有太多经验,因为无论如何这都是在关系数据库中存储数据的一种糟糕方法。
在此示例中,有2个代理。
我知道:
-第一个“ 2”可能是指座席人数。
-“ 1995”和“ 260”是代理记录的记录ID。
我该如何设计一条SQL语句从php提取这两个记录ID(并在主记录中找到相关数据)?
如果这是一个麻烦的解决方案,我想创建一个新的SQL视图以简化访问。有可能吗?
如果有的话,我找不到解释此字段的任何php函数。
不能重新设计表。
编辑:
当我阅读所指出的类似问题的答案时,我得出的结论是,这很可能是不可能做到的。而且很荒谬。
解决方案需要反复使用SUBSTRING_INDEX。多少次,每次都可能有所不同。即使指定了值的数量,也可能无法在MySQL中完成。我将不得不处理由此产生的限制。
答案 0 :(得分:0)
您提到的数据格式为php's serialization format。在JSON接管世界之前,Rasmus Lerdorf和php创建者想出了自己的方法。
WordPress大量使用了这些东西。
php's unserialize()
function将其从该字符串表示形式转换为适当的php对象。
如果必须的话,可以使用MySQL string functions和LOCATE()之类的SUBSTRING()从那些序列化的字符串中提取某些值。但这将是一个巨大的麻烦,并且非常特定于序列化的对象。