繁体   English   中英

如何解析mySql表的单个字段中的多个值?

[英]How can I parse multiple values in a single field of a mySql table?

我正在使用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中完成。 我将不得不处理由此产生的限制。

您提到的数据格式是php的序列化格式 在JSON接管世界之前,Rasmus Lerdorf和php创建者想出了自己的方法。

WordPress使用了很多这样的东西。

php的unserialize()函数将其从该字符串表示形式转换为适当的php对象。

如果必须,您可能可以使用MySQL字符串函数(LOCATE()SUBSTRING())从那些序列化的字符串中提取某些值。 但这将是一个巨大的瓶颈,并且非常针对序列化的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM