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