Мне нужна помощь в поиске подстановочного знака для использования в функции JSON_SEARCH mysql

#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-«, это нормально.