#mysql #mysql-json
#mysql #mysql-json
Вопрос:
Я пытаюсь получить правильный подстановочный знак (пытаюсь [0-9]%), используя:
JSON_SEARCH(packages, 'one', 'openstack-neutron-[0-9]%', null, '$.packages[*]')
Мне просто нужно получить «openstack-neutron-12.1.0-2- el7ost.noarch»
но не все
«openstack-neutron-blabla1-14.5.5-el7ost.noarch»
«openstack-neutron-blabla2-12.1.0-2- el7ost.noarch»
…
Что я делаю не так?
Спасибо
Комментарии:
1. шаблон поиска работает как строка, а не как обычное выражение
2. да, вы правы. Но я думаю, что [] это также оператор like или я ошибаюсь? Я видел эту ссылку w3schools.com/sql/sql_wildcards.asp
3. поскольку я сожалею, что подстановочные знаки предназначены для строк и как их искать, как указано в ссылке, которую вы предоставили шаблон поиска, который показывает, что вам нужны регулярные выражения )часть чисел), это возможно, но вы предоставили недостаточно примеров данных, чтобы мы могли создать один для вас
Ответ №1:
Итак, ваша поисковая строка должна начинаться с openstack-neutron-
и заканчиваться -12.1.0-2-el7ost.noarch
ИСПОЛЬЗОВАТЬ
WHERE JSON_SEARCH(packages, 'one', 'openstack-neutron-%', null, '$.packages[*]') IS NOT NULL
AND JSON_SEARCH(packages, 'one', '%-12.1.0-2-el7ost.noarch', null, '$.packages[*]') IS NOT NULL
Комментарии:
1. спасибо за ваш ответ. Таким образом, JSON_SEARCH перехватит только «12.1.0-2». Мне нужен тот, который улавливает только openstack-neutron-<всю версию>. Мне просто нужно заставить, чтобы первый символ после «neutron-» был числом, но я не могу найти способ.
2. пожалуйста, приведите пример вашего json JSON — это строка, чтобы вы могли использовать с ней регулярные выражения, это намного сложнее
3. Я пробовал с регулярным выражением, и это частично сработало. Я пытаюсь создать JSON_SEARCH с параметром ‘one’. Что это делает, так это то, что он находит первое совпадение и переходит к следующей записи. Из-за этого я должен включать регулярное выражение в JSON_SEARCH, а не после JSON_SEARCH. Я не знаю, как включить регулярное выражение в JSON_SEARCH.
4. пока вы ищете там числа, которые вы потеряли. итак, покажите нам шаблон, который вы использовали, и покажите нам также данные json
5. openstack-neutron-1-el7ost.noarch openstack-neutron-12.1.0-2- el7ost.noarch openstack-neutron-blablabla-el7ost.noarch openstack-neutron-blablabla1-el7ost.noarch openstack-neutron-blablabla2-el7ost.noarch openstack-neutron-blablabla3-el7ost.noarch Первые два должны пройти, если у меня есть число после «neutron-«, это нормально.