Поиск строки, чтобы найти, какие записи в таблице находятся внутри указанной строки - PullRequest
0 голосов
/ 05 апреля 2010

Скажите, у меня есть строка.

Тогда у меня есть несколько уникальных токенов или ключевых слов, потенциально большое количество в базе данных.

Я хочу найти и выяснить, какие из этих строк базы данных находятся внутри строки, которую я предоставляю (и получить их идентификаторы).

Есть ли способ использовать запрос для поиска в предоставленной строке или он должен быть перенесен в область приложения?

Правильно ли я считаю, что это не «полнотекстовый поиск»? Будет ли лучший способ вставить его в базу данных, чтобы сделать его полнотекстовый поиск?

1 Ответ

0 голосов
/ 05 апреля 2010

посмотрите на функцию

  • position(token in LongString) для postgresql
  • Функция instr (oken, LongString) для mysql.

Каждый возвращает позицию токена в LongString.Когда эта позиция> 0, у вас есть совпадение.

postgresql:

select st.string, tt.token 
  from tokentable as tt 
     , stringtable as st
 where position(tt.token in st.string) >0

mysql:

select st.string, tt.token 
  from tokentable as tt 
     , stringtable as st
 where instrr(tt.token ,st.string) >0

Пожалуйста, имейте в виду, что это будет медленно и потреблять много ресурсов.Если вам нужно часто выполнять такое сопоставление, возможно, вы захотите изменить дизайн вашей БД.

Почему отмечены mysql и postgresql?

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