Sql 基于hstore标签的PostGis搜索查询

Sql 基于hstore标签的PostGis搜索查询,sql,postgresql,postgis,hstore,Sql,Postgresql,Postgis,Hstore,我正在编写一个搜索客户端,用于查询postgis数据库 搜索查询将是 SELECT tags->'name' AS name,ST_Transform(way,4326) AS pt_lonlattext FROM planet_osm_point WHERE lower(tags->'name') LIKE '%school%' 现在,我需要这样的结果: 完全匹配的结果应优先于部分匹配的结果。 e、 g.只有“学校”名称的成绩应排在返回名单的第一位,其次是“小学”、“高

我正在编写一个搜索客户端,用于查询postgis数据库

搜索查询将是

    SELECT tags->'name' AS name,ST_Transform(way,4326) AS pt_lonlattext 
FROM planet_osm_point WHERE lower(tags->'name') LIKE '%school%'
现在,我需要这样的结果:

完全匹配的结果应优先于部分匹配的结果。 e、 g.只有“学校”名称的成绩应排在返回名单的第一位,其次是“小学”、“高中”等成绩

有没有办法重新构造上述查询以获得所需的结果?

类似这样的内容

select
    tags->'name' as name,
    ST_Transform(way,4326) as pt_lonlattext 
from planet_osm_point
where lower(tags->'name') LIKE '%school%'
order by case when lower(tags->'name') = 'school' then 0 else 1 end
或者,更干燥的版本:

with cte as (
    select
        tags->'name' as name,
        ST_Transform(way,4326) as pt_lonlattext 
    from planet_osm_point
)
select name, pt_lonlattext 
from cte
where lower(name) like '%school%'
order by case when lower(name) = 'school' then 0 else 1 end