Как получить sqlite запрос работает на MySQL? - PullRequest
1 голос
/ 27 июня 2019

У меня есть sqlite-запрос. Я хочу, чтобы он работал в базе данных mysql. Я использовал MATCH AND AGAINST, но это не помогает, если вы видите эту часть

'TEST:^hello ' 

Как я могу это сделать?спасибо

SELECT * FROM table_a MATCH 'TEST:^hello ' AND test2 = 'hello' 

Я теперь использую MATCH, AGAINST в моем запросе MySql, и я хочу найти все слова, начинающиеся с «hello» (вы видите пробел после hello!), так как я могу это сделать, используяПОЛНЫЙ ТЕКСТ поиск с МАТЧОМ И ПРОТИВ?

words
hello
hello how are you
you are good hello
hello ?
nice hello fine

I want this 
hello
hello ?
hello how are you
nice hello fine 
you are good hello

1 Ответ

1 голос
/ 27 июня 2019

Я сейчас использую MATCH, AGAINST в моем запросе MySql, и я хочу найти все слова, начинающиеся с «hello» (вы видите пробел после hello!), Так как я могу это сделать, используя поиск FULLTEXT с MATCHИ ПРОТИВ?

Поскольку MATCH() AGAINST() в MySQL не поддерживает REGEX, я бы, скорее всего, пошел бы на это.

SELECT 
 *
FROM (

  SELECT 
   *
  FROM
   test
  WHERE
   MATCH(word) AGAINST('+hello ')      
) AS fulltext_scan
WHERE 
 fulltext_scan.word REGEXP '^hello '

Или

SELECT 
 *
FROM (

  SELECT 
   *
  FROM
   test
  WHERE
   MATCH(word) AGAINST('+hello ')

) AS fulltext_scan
WHERE 
 fulltext_scan.word LIKE 'hello %'

Как это работает, внутренний sql (поставляемая таблица) ограничивает результат на основе MATCH(word) AGAINST('+hello ') и может использовать FULLTEXT index чтобы ускорить это.Внешний SQL-фильтр фильтрует этот набор результатов с помощью REGEX или LIKE, чтобы соответствовать только старту приветствия.

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