Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中搜索和排序数据但排除前缀词_Sql_Ruby On Rails_Ruby On Rails 3_Postgresql_Ruby On Rails 4 - Fatal编程技术网

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

如何在sql中搜索和排序数据但排除前缀词,sql,ruby-on-rails,ruby-on-rails-3,postgresql,ruby-on-rails-4,Sql,Ruby On Rails,Ruby On Rails 3,Postgresql,Ruby On Rails 4,在我的项目中,我使用RubyonRails和gem来实现使用PostgreSQL数据库的全文搜索功能。目前,我有一个医院列表,名称如下: Hospital A Hospital C Hospital D Hospital B A 当我进行搜索时,我希望单词Hospital不会影响返回的结果,并且可以在没有Hospital前缀的情况下对结果进行排序 例如,如果我在查询字段中输入Hospital,则不会返回结果,但如果我输入A,Hospital A和Hospital B A将是结果,则结果可以按字

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

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

例如,如果我在查询字段中输入
Hospital
,则不会返回结果,但如果我输入
A
Hospital A
Hospital B A
将是结果,则结果可以按字母顺序排序,而不使用
Hospital
前缀词作为列表:

Hospital A
Hospital B A
我对此进行了搜索并找到了答案,但使用的是一个视图,我不知道如何在Rails中实现它

我不确定pg_search gem是否支持子字符串,因为我在它的github上没有找到关于它的文档。有人知道博士后是否具备从事此类工作的能力吗

谢谢你的帮助


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

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

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

如果您使用PostgreSQL的全文搜索,请添加“Hospital”作为停止词。