【问题标题】:Using Table As Input to Query for Substrings使用表作为输入来查询子字符串
【发布时间】:2015-04-22 22:39:14
【问题描述】:

我在 PostgreSQL 中有一个 LARGE 单词表,其中有一个操作映射到一个数字,如果单词匹配,它应该执行该操作。例如:

  words_table
words | operation
-----------------
fox   |    1
brown |    2
cow   |    1
moo   |    3
...

我希望能够提供一个字符串并查看表中的 operations 是输入的子字符串,忽略大小写。例如,两个输入字符串:

How brown are your cows and foxes?
Howbrownareyourcowsandfoxes?

将返回1, 2。这对我来说是一个不寻常的问题,因为我想使用单词表作为数据的“输入”。我意识到此操作将导致全表扫描,并且我需要对operations 进行联合/不同,但我不知道如何启动我的查询/子查询(我想我必须使用某处的 CONTAINS/LIKE 子查询)让表成为检查子字符串的输入。

任何帮助制定 SQL 语句或策略将不胜感激。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    因为您不是在处理单词(分隔字符串),所以全文索引没有用处。你也许可以使用 ngrams 取得一些进展。

    基本查询是

    select distinct wt.operation
    from words_table wt
    where YOURSTRING like '%' || wt.words || '%';
    

    【讨论】:

    • 太棒了!非常感谢,查询看起来比预期的要简单得多。
    猜你喜欢
    • 2013-05-07
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多