gpt4 book ai didi

sql - 如何搜索整个单词是否存在于 Postgres 的字符串中

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

我有一个表,其中有一列字段,其值类似于 Samsung Phone。

我的问题是,如果我搜索字符串“Samsung”或“phone”,如何获得这一行。如果我只给出“Sam”或“ph”作为搜索词,我不想要任何结果。

我曾尝试使用 ILIKE 运算符,但如果我使用:

select * 
from mytable
where title ILIKE 'Samsung';

它不给出任何结果,因为它认为标题应该完全相等。此外,如果我使用 title ILIKE '%Samsung%',那么它将适用于任何部分字符串。

简而言之,我希望如果输入的搜索词作为一个完整的词存在于我的列中,那么只给出搜索结果。

此外,如果我有多个搜索词值,那么任何单词匹配都应该是结果

最佳答案

您可以为此使用正则表达式:

where title ~* '(\mphone\M)|(\msamsung\M)'

以上仅返回 phonesamsung 是完整单词的值。正则表达式修饰符 \m\M 使模式只匹配整个单词。

正则表达式运算符 ~* 使它不区分大小写。上面的表达式将返回 Samsung PhoneGoogle Phone 但不会返回 Sam's House

如果要添加更多单词,只需使用“或”运算符添加即可 |

where title ~* '(\mphone\M)|(\msamsung\M)|(\mbhat\M)'

请注意,这种搜索不会非常快。正则表达式很昂贵,它们不能使用任何索引。

关于sql - 如何搜索整个单词是否存在于 Postgres 的字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521687/

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