gpt4 book ai didi

sql - 如何搜索和排序数据但排除sql中的前缀词

转载 作者:行者123 更新时间:2023-11-29 11:22:34 25 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 和 pg_search在我的项目中使用 PostgreSQL 数据库实现全文搜索功能的 gem。目前,我有一个名称如下的医院列表:

Hospital A
Hospital C
Hospital D
Hospital B A

当我进行搜索时,我希望单词 Hospital 不会影响返回的结果,并且结果可以在没有 Hospital 前缀的情况下进行排序。

例如,如果我在查询字段中输入Hospital,将没有返回结果,但是如果我输入AHospital AHospital B A 将结果,然后结果可以按字母顺序排序,不带 Hospital 前缀词成为列表:

Hospital A
Hospital B A

我对此进行了搜索并找到了 this answer: Advanced MySQL Alphabetical Sort with Prefix? ,但答案使用的是我不知道如何在 Rails 中执行的 View 。

我不确定 pg_search gem 是否支持 SUBSTRING,因为我在它的 github 上没有找到关于它的文档。有谁知道 Postgres 是否具有执行此类工作的功能?

感谢您的帮助。

更新:我最终使用一个列来存储这个前缀词,这样我就可以搜索内容并从查询中排除该词并返回预期结果。对于面临这个问题的任何人,请考虑并尝试我的解决方案,如果它可以拯救你。

最佳答案

你可以切断前缀。此处显示带有前缀“医院”。因为您似乎不想要前缀后的空格,所以我添加了 1 来跳过它。当然,如果它总是相同的,你也可以只输入数字。要拆分所有内容直到第一个空格,您可以使用正则表达式。诀窍是创建一个临时表,您可以在其中添加所需的所有内容,然后您可以轻松地从中进行选择。如果前缀正在更改,您可能希望将内部选择限制为 WHERE name LIKE 'Hospital%'。

SELECT
name
FROM (
SELECT
SUBSTR(name, LENGTH('Hospital') + 1) AS name
FROM
hospital
) AS T
WHERE
name LIKE '%A%'
ORDER BY
name
;

SQL fiddle

关于sql - 如何搜索和排序数据但排除sql中的前缀词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com