gpt4 book ai didi

mysql - SQL 文本搜索 - EXACT 在空格之前,LIKE 在搜索词之后

转载 作者:行者123 更新时间:2023-11-29 00:06:44 26 4
gpt4 key购买 nike

我正在尝试创建一个 SQL 查询,它将为文本字段的自动完成提供值。一切正常,但我似乎无法创建一个足够精确的 SQL 查询来满足我想要的目的。我正在使用 MySQL。

如果搜索词中有一个空格(或多个空格),我只希望查询对最后一个空格之后的字符串部分进行 LIKE 比较。

例如,假设我在数据库中有两个可能的值:

  • bolt
  • 大 bolt

目前,如果用户键入“Bolt”然后输入空格,则使用此查询返回上述两个值 -

SELECT name FROM items WHERE name LIKE 'SEARCH_TERM%'

我想要的是,如果用户键入“Bolt”然后输入一个空格,那么数据库只会返回 Bolt。

实际上意味着只有空格后的搜索词的最后一部分使用 LIKE 进行比较,结果应该完全匹配直到最后一个空格。

我也试过:

SELECT name FROM items WHERE name LIKE 'SEARCH_TERM[a-z]%'

但实际上使用上述场景不会返回任何结果。

我所追求的是可能的吗?我也尝试过使用全文搜索进行探索,但没有看过。我相信在名称字段上启用了全文搜索,但是我对此的经验有限。以下查询无效。

SELECT name FROM items WHERE MATCH(name) AGAINST('SEARCH_TERM')

如有任何建议或要点,我们将不胜感激。

最佳答案

查询

SELECT name FROM items WHERE name LIKE 'Bolt %'

不返回任何记录,因为“Bolt”和“Bolts Large”都不匹配“Bolt %”。

SELECT name FROM items WHERE name LIKE 'Bolt%'

返回两条记录,因为“Bolt”和“Bolts Large”都匹配“Bolt%”。

要查找“Bolt”而不是“Bolts”,您必须在搜索字符串和列字符串中添加一个空格:

 SELECT name FROM items WHERE concat(name, ' ') LIKE 'Bolt %'

返回“ bolt ”而不是“大 bolt ”。

关于mysql - SQL 文本搜索 - EXACT 在空格之前,LIKE 在搜索词之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169067/

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