2014-02-27 5 views
1

Я пытаюсь получить список продуктов из базы данных. У меня есть столбец «products_in_cart», который содержит сериализованные данные в форме a:2:{i:0;s:3:"125";i:1;s:2:"92";}. Я хочу только выбрать ячейки, содержащие сериализованные данные, как указано выше, по крайней мере один продукт в корзине. Столбец имеет тип «text NULL», поэтому я выбрал «from where IS NOT NULL», но я получаю поля, которые также не содержат продуктов. Я также узнал, что у меня есть записи, содержащие некоторые сериализованные данные, такие как a:0:{}, но не пары ключ-> значение, и я не хочу их извлекать. Есть ли способ выбрать только строки, содержащие сериализованные данные в поле «продукт» с помощью пары leas one key => value?MySql - выберите только ячейки, содержащие сериализованные данные

Спасибо!

ответ

2

Вы можете добавить "where products_in_cart не нравится"%: {} '". Это исключает любую запись, где нет данных между скобками.

В том случае, если вы можете иметь как нуль, и упомянутые выше данные, которые вы должны использовать:

WHERE products_in_cart not like '%:{}' 
and products_in_cart is not NULL 
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)

Смежные вопросы