SQL排列查询

问题描述 投票:0回答:1

我具有关键字搜索功能。我想要一个SQL查询来搜索数据库中单词的排列。如果我输入“ ABC”,则应该搜索所有组合词[“ ABC”,“ ACB”,“ BAC”,“ BCA”,“ CAB”,“ CBA”]。

我已经检查了多个选项,首先他们创建排列词,然后过滤数据。但是我的问题是,当我们输入长字符串eq时:-“ ABCDEFGIJ”,其置换单词数增加到“ 362880”单词。(长sql字符串花费大量时间进行搜索)

我需要一个/简单/快速查询来从数据库中过滤数据。

让我知道您是否有任何可能的解决方案。

sql ruby-on-rails-5
1个回答
0
投票
如Akina所写,请顺其自然。

存储您的数据:

------------------------ | Value | Sorted | ------------------------ | ABCD | ABCD | | DCAB | ABCD | ------------------------

然后对搜索字符串进行排序,然后只需要搜索一次。适用于单词和通配符。 

----------------------------- | Value | Sorted | ----------------------------- | In the hut | IN HUT THE | | In the dark | IN DARK THE | | In the zone | IN THE ZONE | | In our hut | IN HUT OUR | -----------------------------

搜索In the将搜索IN*THE并找到3个结果

搜索In hut将搜索IN*HUT并找到2个结果

© www.soinside.com 2019 - 2024. All rights reserved.