如何让SQLite查询在MySQL上工作?

how to get sqlite query works on mysql?

提问人:Anna 提问时间:6/27/2019 最后编辑:Anna 更新时间:6/27/2019 访问量:94

问:

我有sqlite查询 我想让它在mysql数据库上运行 我使用了 MATCH AND AGAINST 但如果您看到这部分,它无济于事

'TEST:^hello ' 

我该怎么做? 谢谢

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

我现在在我的 MySql 查询中使用 MATCH , AGAINST ,我想找到所有以“hello”开头的单词(您会看到 hello 后面的空格! 那么我如何使用带有 MATCH 和 AGAINST 的全文搜索来做到这一点呢?

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
php mysql sqlite 匹配

评论

0赞 Anna 6/27/2019
@RaymondNijland你能给我举个例子来查找mysql查询以找到'TEST:^hello '
0赞 Danyal Sandeelo 6/27/2019
@Anna你想获取测试匹配和 test2 是 hello 的所有记录,对吧?hello
1赞 Raymond Nijland 6/27/2019
TopicStarter 应该提供一个示例和预期结果,然后我们就可以停止猜测了。
1赞 Raymond Nijland 6/27/2019
在MySQL中,最好的选择是最有可能使用MATCH(column) AGAINST('+hello ' IN BOOLEAN MODE) AND column REGEXP '^hello '
0赞 Anna 6/27/2019
谢谢,编辑了我的问题

答:

0赞 Raymond Nijland 6/27/2019 #1

我现在在我的 MySql 查询中使用 MATCH , AGAINST 并且我想找到所有 以“hello”开头的单词(你看到hello后面的空格! 那么我如何使用带有 MATCH 和 AGAINST 的全文搜索来做到这一点呢?

由于MySQL不支持,我很可能会选择。MATCH() AGAINST()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(交付表)基于结果限制结果,并可以使用 FULLTEXT 索引来加快速度。
外部 SQL 使用 REGEX 或 LIKE 过滤该结果集,以仅匹配 hello 启动。
MATCH(word) AGAINST('+hello ')

评论

0赞 Anna 6/28/2019
它的工作感谢,但是当我搜索瑞典语单词时,我得到了 ä,ö,å 的这个词1139 Got error 'nothing to repeat at offset 1' from regexp
0赞 Raymond Nijland 6/28/2019
@Anna是的,我相信只有 MySQL 8.0 具有良好的 utf8 正则表达式支持,在 MySQL 8 正则表达式下,正则表达式仅适用于 latin1。