MySql - 仅选择包含序列化数据的单元格

时间:2014-02-27 14:59:05

标签: php mysql serialization

我正在尝试从数据库中检索产品列表。我有“products_in_cart”列,其中包含a:2:{i:0;s:3:"125";i:1;s:2:"92";}形式的序列化数据。我只想选择包含上述序列化数据的单元格,至少包含购物车中的一个产品。该列的类型为“text NULL”,因此我选择了“from IS NOT NULL”但我得到的字段也不包含产品。我还发现我的条目包含一些序列化数据,如a:0:{}但没有key->值对,我不想检索它们。 有没有办法只选择字段“product”中包含序列化数据的行,并且只有一个键=>值对?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以添加“其中products_in_cart不喜欢'%:{}'”。这将排除括号之间没有数据的任何条目。

如果您可能同时使用null和上述数据,则需要使用:

WHERE products_in_cart not like '%:{}'
and products_in_cart is not NULL

答案 1 :(得分:1)

select products_in_cart from TABLE   
where products_in_cart != '' 
  and products_in_cart is not like '%:{}'
  and products_in_cart is not null
如果脚本留下空白数据(''与NULL不同)

,则需要第一个条件