2016-03-04 4 views
0

Колонка actions_serialized содержит следующее значение:MySql выбрать, получить несколько мест где строки

а: 7: {ы: 4: "тип", S: 40: "salesrule/rule_condition_product_combine"; s: 9: "атрибут", N; s: 8: "оператор", N; s: 5: "значение"; s: 1: "1"; s: 18: "is_value_processed", N; s: 10: "агрегатор "; s: 3:" любой "; s: 10:" условия "; а: 3: {я: 0; а: 5: {s: 4:" тип "; s: 32:" salesrule/rule_condition_product "; s: 9: «атрибут»; s: 3: «sku»; s: 8: «operator»; s: 2: «==»; s: 5: «value»; s: 17: «SKU -ABC1 "; s: 18:" is_value_processed "; b: 0;} i: 1; a: 5: {s: 4:" type "; s: 32:" salesrule/rule_condition_product "; s: 9: атрибут "; s: 3:" sku "; : 8: «operator»; s: 2: «==»; s: 5: «value»; s: 76: «SKU-ABC203»; s: 18: «is_value_processed»; b: 0;} i : 2; a: 5:}}}

Теперь мне нужно получить все SKU в отдельной строке.

Итак, у меня есть следующий запрос, но он возвращает только первый экземпляр события SKU.

Как получить все другие вхождения, и как бы я разделил их на отдельную строку?

Обратите внимание, что случаи SKU могут иногда содержать до 10 + SKU.

select 
sr.id, 
group_concat(distinct substring(sr.actions_serialized, 
locate('sku', sr.actions_serialized)+47, 
locate(';s:18:"is_value_processed";b', sr.actions_serialized)- 
locate('sku', sr.actions_serialized)-48)) skus 

from from salesrule sr 
group by sr.id 

Выше запроса возвращает только первый экземпляр SKU. Но желаемые результаты:

id skus 
1 SKU-ABC1 
1 SKU-ABC203 

Если это невозможно, то по крайней мере:

id skus 
1 SKU-ABC1,SKU-ABC203 

ответ

0

Это должно работать с CONCAT.

SELECT 
    sr.id, 
    CONCAT(distinct substring(sr.actions_serialized, 
    locate('sku', sr.actions_serialized)+47, 
    locate(';s:18:"is_value_processed";b', sr.actions_serialized)- 
    locate('sku', sr.actions_serialized)-48)) AS skus 
FROM salesrule sr 
GROUP BY sr.id 
+0

Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «отдельной подстрокой» (sr.actions_serialized, locate («sku», sr.actions_serialized »в строке 3 – joell

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