Я использую node.js с squel.js для базы данных SQL. Я храню массив строк в одном поле таблицы.
Скажем, мое табличное имя похоже на XYZ
. И мои данные таблицы похожи
id col2
1 '["a", "b", "x", "y"]'
2 '["x", "y", "q"]'
3 '["q", "e"]'
4 '["p", "q"]'
Теперь я хочу знать, как сделать запрос для поиска, например, если я хочу, как сделать запрос, если я хочу получать записи, такие как
["x", "y"]
. В этом сценарии я хочу ожидать результат id 1 и 2.["q"]
. В этом сценарии я хочу ожидать результата 2 и 4.Пожалуйста, помогите мне здесь, я застрял здесь. Заранее спасибо.
col2
может быть столбцом JSON
, поэтому вы можете сделать что-то вроде:
SELECT * FROM XYZ WHERE JSON_CONTAINS(col2, JSON_ARRAY('x', 'y'));
SELECT * FROM XYZ WHERE JSON_CONTAINS(col2, JSON_ARRAY('q'));
Второй запрос будет возвращать строки 2
, 3
и 4
, но я предполагаю, что ваше ожидание может быть неправильно указано, так как 'q'
существует в массиве col2
для всех этих.
Если я правильно понимаю ваш вопрос, просто используйте LIKE
чтобы это сделать
Для первого требования вы можете использовать
SELECT * FROM yourtable WHERE col2 LIKE '%"x"%' AND col2 LIKE '%"y"%'
ИЛИ ЖЕ
SELECT * FROM yourtable WHERE col2 LIKE '%"x","y"%'
Поскольку я точно не знаю формат, это просто проверка совпадений x
и y
? Или просто совпадение "x","y"
точно?
Для второго требования вы можете использовать
SELECT * FROM yourtable WHERE col2 LIKE '%"q"%'