提问人:Anna 提问时间:6/27/2019 最后编辑:Anna 更新时间:6/27/2019 访问量:94
如何让SQLite查询在MySQL上工作?
how to get sqlite query works on mysql?
问:
我有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
答:
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。
评论
hello
MATCH(column) AGAINST('+hello ' IN BOOLEAN MODE) AND column REGEXP '^hello '