【问题标题】:How to search for values of several columns at once that start with some string如何一次搜索以某个字符串开头的多个列的值
【发布时间】:2022-01-25 23:52:38
【问题描述】:

我对数据库和查询领域完全陌生。

我有以下数据库

我想为其构建一个“智能”搜索查询,以便能够根据在isbnnameauthor 列中查找内容的查询获取相关条目。问题是输入查询不一定是关键字,它可以是关键字的一部分。我希望能够输入 isbn 编号的一部分、书名的一部分、作者姓名的一部分并返回相关结果。

假设我查询“97182”,我想要所有 isbn 以该序列开头的书。

或者如果我查询“ma”,我想要所有名称或作者以“ma”开头的条目。

例如,我最近了解到可以使用 Postgresql 执行以下操作(我相信名称是“全文搜索”):

SELECT *
FROM books
WHERE to_tsvector(isbn || ' ' || name || ' ' || author) @@ to_tsquery('proust')

输出将是在搜索的列之一中具有“proust”的行。

由于其工作方式的性质(向量化列、减少到词位等),相同的 postgresql 查询不适用于我提到的内容。不过我还没有完全理解全文搜索。

是否可以根据我的描述创建一个“更智能”的查询?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    使用LIKE:

    WHERE LOWER(isbn || ' ' || name || ' ' || author) LIKE '%proust%'
    

    与您使用的专有函数不同,此代码将在所有 RDBMS 上运行。

    【讨论】:

    • 这是原生 SQL 还是 PostgreSQL?
    • @NoName123 这是标准 SQL。
    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2014-12-02
    • 2022-11-13
    • 1970-01-01
    相关资源
    最近更新 更多