sql - 使用 Postgre 进行 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 中:oj ed a
- 第二个结果以名义出现:Ed uardo
- 第三个结果已存在于 last_name 中:Pa ed es
这是我的(简化)查询:
SELECT u.name, u.last_name FROM user u WHERE u.name ~* :searchTerm OR u.last_name ~* :searchTerm
我认为Ed uardo 是我的搜索中最准确的结果,因为我按“ED”的顺序搜索(也可能是开头带有 ED 的姓氏),所以我想得到 Eduardo,因为我的第一个结果有实现这一目标的方法?
我知道我可以使用 LIKE %:searchTerm 但我想在整个字符串中搜索,但以某种预定义的顺序获取结果。
谢谢你!
解决方案
添加一个ORDER BY
子句:
ORDER BY starts_with(u.name, :searchTerm) DESC
这依赖于FALSE < TRUE
.
推荐阅读
- azure - 通过 VPN 连接到 Azure SQL
- html - 使用 CSS (LESS) 选择与所选元素(附加了唯一类)相关的 N 个下一个兄弟姐妹
- sql - 如何在 SQL 中将不同的列条目设置为列
- python - Matplotlib 从日期时间而不是时间绘制日期
- ios - 如何以编程方式快速将子视图添加到自定义视图
- c# - 在实体的 IQueryable 中使用相关实体的 IQueryable
- html - Angular生成刷新按钮单击
- python - 如果列是日期,熊猫,则按列名对数据框进行排序?
- html - 在 HTML 中生成的客户端中的 Swagger-Editor 空响应
- angular - 对 NGXS 表单 UpdateFormValue 执行副作用