#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-символы (обратные метки). Однако они не нужны. - Ваши данные заключены в двойные кавычки вокруг значений. Однако вы удвоили одинарные кавычки в строке сравнения. Одинарные и двойные кавычки — это разные вещи.