POSIX (~*) 使用 Postgre 搜索.结果顺序



我有一个查询,它给了我一个基于搜索词的结果。

我正在使用来自邮政的 POSIX 搜索 (~*(: https://www.postgresql.org/docs/8.3/functions-matching.html#FUNCTIONS-POSIX-REGEXP

例如,如果我搜索">ed">

结果将是这样的:

{
"success": true,
"data": [
{
"name": "Victoria",
"last_name": "Ojeda Acu–a",
},
{
"name": "Eduardo Daniel",
"last_name": "Ordo–ez",
},
{
"name": "Ludmila Daiana",
"last_name": "Paredes Sosa",
}
]
}
  • 因此,第一个结果在 last_name 中存在:ojeda
  • 第二个结果以Ed的名字存在:Ed uardo
  • 第三个结果在 last_name 中存在:Paedes

这是我的(简化(查询:

SELECT u.name, u.last_name FROM user u WHERE u.name ~* :searchTerm OR u.last_name ~* :searchTerm

我认为Eduardo 是我搜索的最准确的结果,因为我按"ED">的顺序搜索(一开始也可能是 ED 的一些last_name(,所以我想让 Eduardo 作为我的第一个结果有什么办法可以实现这一点吗?

我知道我可以使用 LIKE %:searchTerm,但我想搜索整个字符串,但以某种预定义的顺序获取结果。

谢谢!

添加一个ORDER BY子句:

ORDER BY starts_with(u.name, :searchTerm) DESC

这依赖于FALSE < TRUE.

相关内容

  • 没有找到相关文章

最新更新