Как создать поиск «Любое слово»? - PullRequest
1 голос
/ 08 февраля 2011

То, что мы пытаемся сделать, - это создать текстовый поиск для совпадения любого типа.Таблица настроена, например, следующим образом:

ID | Keyword
-------------
1  | alpha, beta, charlie
2  | bravo, delta, echo
3  | alpha, delta, foxtrot

Запрос, который мы до сих пор пытались выполнить, выглядит следующим образом:

SELECT keyword FROM KeywordTest
       WHERE keyword 
 IN (select Value FRom split('alpha, beta, charlie',','))

Мы думали, что получится, чтодва результата назад, один для идентификатора 1 и один для идентификатора 3. Но это не то, что происходит, мы получаем только идентификатор 1.

Что я делаю неправильно, и как я могу настроить этот запрос, чтобы вернутьсовпадение с «Любыми словами», которые передаются как параметры.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Проблема в том, где, потому что ключ не в IN, ключевое слово LIKE - выбор.Вы можете попробовать с ВНУТРЕННИМ СОЕДИНЕНИЕМ:

SELECT  keyword 
FROM    KeywordTest a inner join
        split('alpha, beta, charlie',',') b on a.keyword like '%'+Value+'%'
1 голос
/ 08 февраля 2011

Я на самом деле только что решил очень похожую проблему.

Я полагаю, что вы хотите взглянуть на ключевое слово LIKE для SQL.

SELECT keyword FROM KeywordTest
       WHERE keyword LIKE %'alpha'%

Обратите внимание, что вам может потребоваться выполнить какое-то разделение по разделителю, чтобы все результаты поиска были включены в запрос LIKE. (Я могу помочь с этим, если вам нужно)

Кроме того, имейте в виду, что% является групповым символом. Если поставить% до и после критерия поиска, эта строка будет найдена в любом контексте.

Если бы мы поставили WHERE Keyword LIKE 'alpha'%, мы бы нашли результаты, которые начинаются с alpha.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...