Поиск текста в квадратных скобках и речевых пометок SQL

#mysql #sql

#mysql #sql

Вопрос:

Я хочу выполнить поиск текста в квадратных скобках и речевых обозначениях. Значения в столбце выглядят следующим образом: ["flour","butter","eggs"]

Я пытался:

 SELECT * FROM 'posts' WHERE ingredients = '''butter'''
  

Однако, er не работает.

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

Ps. Я знаю, что данные не должны были храниться таким образом, и они не в правильной нормальной форме. Мне просто нужен способ поиска этого на данный момент.

Комментарии:

1. Вы должны хранить ингредиенты в отдельной таблице, чтобы ваши данные были нормализованы. В противном случае вам придется дорого заплатить за хранение ингредиентов в одном столбце, потому что вам нужно будет реализовать то, что DB предоставляет вам бесплатно (например, поиск, добавление и удаление отдельных элементов).

Ответ №1:

Что ж, если это JSON, вы должны хранить его как JSON, а не как строку.

Тем не менее, вы можете использовать LIKE :

 SELECT p.*
FROM posts p
WHERE ingredients LIKE '%"butter"%';
  

Некоторые комментарии по поводу кавычек. Кажется, вас очень смущают кавычки в вашем запросе.

  • У вас есть 'posts' в качестве имени таблицы в одинарных кавычках. Это фактически вернет ошибку. Единственными разрешенными кавычками здесь являются escape-символы (обратные метки). Однако они не нужны.
  • Ваши данные заключены в двойные кавычки вокруг значений. Однако вы удвоили одинарные кавычки в строке сравнения. Одинарные и двойные кавычки — это разные вещи.