我将项目列表存储在数据库字段中的序列化数组中(我使用的是 PHP/MySQL)。
我想要一个查询,该查询将选择包含数组中这些项目中的特定一项的所有记录。
像这样的事情:
select * from table WHERE (an item in my array) = '$n'
希望这是有道理的。
任何想法将不胜感激。
Thanks
正如 GWW 在评论中所说,如果您需要以这种方式查询内容,您确实应该考虑将此数据存储为大字符串(这就是您的序列化数组)之外的其他内容。
如果这是不可能的(或者你只是懒),你可以利用序列化数组只是一个大字符串这一事实,并找出一个 LIKE 子句来查找匹配的记录。 PHP 序列化数据的方式很容易理解(提示:这些数字表示事物的长度)。
现在,如果您的序列化数组相当复杂,这将很快崩溃。但如果它是一个平面数组,你应该能够做到。
当然,您将使用 LIKE '%...%',因此您将无法从任何索引中获得任何帮助,并且性能将非常差。
这就是为什么人们建议您以某种标准化的方式存储数据,如果您需要查询“内部”数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)