Можно ли совместить полную строку с чем-то немного меньше в БД?Rails Postgres ILIKE in reverse
В принципе, у меня может быть строка типа «Microsoft Windows XP Home Edition
» или «Microsoft Windows XP SP2
», но в моей БД у меня есть «Microsoft Windows XP
».
В настоящее время я использую ILIKE
:
Issue.where(type: :os).where("name ILIKE ?", "%Windows XP SP2%")
Который не находит совпадение, поскольку SP2
часть не существует.
Итак, есть ли какая-то функциональность, которая позволила бы мне поместить что-то общее в поле БД, как я есть, и выяснить соответствие, если вход более конкретный?
Это не похоже на работу ... запись 'name' в моей БД 'Microsoft Windows XP' и то, что я натыкаюсь на БД по вашему предложению, - «Windows XP SP2». В этом случае я ожидал бы, что «Windows XP» будет соответствовать. 'Issue.where (type:: os) .where (" name ~ *? "," Windows XP SP2 ")'. Ничего не возвращает. – Godzilla74
Да, ты прав. Вам нужно посмотреть полнотекстовый поиск. Простой пример 'Issue.where (" to_tsvector (name) @@ to_tsquery ('Windows | XP | SP2') ")' –
Это сработало ... Мне просто нужно разграничить пробелы перед тем, как перейти к инструкции DB. Хотите обновить свой ответ? – Godzilla74