SQL-запрос, где массив находится в поле массива - PullRequest
0 голосов
/ 05 июня 2018

У меня есть таблица, у которой есть поле массива с именем countries Так, скажем, например, в этой таблице с именем country_list у меня есть следующие записи

Name         Countries
Asia         ['Malaysia, Singapore, Hong Kong]
Worldwide    ['Malaysia, Singapore, Hong Kong, Croatia, USA]

Теперь, если я хочу запросить эту таблицучтобы узнать, какие записи имеют ['Malaysia, 'Singapore'], как мне написать запрос в моей консоли ruby.

Я пытался сделать это, но это не сработало

CountryList.where("countries IN (['Malaysia', 'Singapore'])"), но не сработало какожидается.

Любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Попробуйте это:

countries = ['Malaysia', 'Singapore']
query = CountryList.where(":name = ANY(country_list.countries)", name: countries[0])

countries[1..-1].each do |c|
  query = query.or(CountryList.where(":name = ANY(country_list.countries)", name: c))
 end
query

Проверили его работу

enter image description here

Спасибо!

0 голосов
/ 05 июня 2018

Нет прямого подхода для запроса сериализованных данных.Но другой обходной путь - выбор / фильтрация всех результатов.Например:

Model.all.select {| s |(s.countries & ['Malaysia', 'Singapore']). присутствует?}

...