给出以下查询:
select * from users
where first_name ilike '%foo%'
OR last_name ilike '%bar%'
OR nickname ilike '%foobar%'
Run Code Online (Sandbox Code Playgroud)
返回:
first_name| last_name | nickname
----------------------------------------
Foo | ABC | abcd
Foo | DEF | efgh
Foo | BAR | ijkl
AMD | Bar | foobar
Foo | Bar | foobar2
Run Code Online (Sandbox Code Playgroud)
题:
如何首先对最相关(匹配)的值进行排序?我的意思是大多数匹配的内部匹配多个模式Where .. OR
预期结果:
first_name| last_name | nickname
----------------------------------------
Foo | Bar | foobar2
Foo | BAR | ijkl
AMD | Bar | foobar
Foo | ABC | abcd
Foo | DEF | efgh
Run Code Online (Sandbox Code Playgroud)
Lau*_*lbe 14
按命中数排序:
... ORDER BY (first_name ILIKE '%foo%')::integer
+ (last_name ILIKE '%bar%')::integer
+ (nickname ILIKE '%foobar%')::integer DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |