Postgresql 如何在单个字段中搜索多个值(GTFS中的公共汽车站)?
在丹佛的GTFS数据中,BUS_STOPS表在ROUTES列中存储多个逗号分隔的值:Postgresql 如何在单个字段中搜索多个值(GTFS中的公共汽车站)?,postgresql,postgis,gtfs,Postgresql,Postgis,Gtfs,在丹佛的GTFS数据中,BUS_STOPS表在ROUTES列中存储多个逗号分隔的值: 28, 19, 44, 10, 32 我正在选择距离学校不远的公共汽车路线 但是选择这些路线上相应的站点意味着从我上面描述的列表中找到一个公交站点(例如,为44路公交车服务的站点)——我不知道如何做到这一点 下面的注释帮助我计算出按其值选择1条路线的情况如下所示: select * from BUS_STOPS where ROUTES like '% 44,%'; …返回在列出的值之一中包含44的记录 那
28, 19, 44, 10, 32
我正在选择距离学校不远的公共汽车路线
但是选择这些路线上相应的站点意味着从我上面描述的列表中找到一个公交站点(例如,为44路公交车服务的站点)——我不知道如何做到这一点
下面的注释帮助我计算出按其值选择1条路线的情况如下所示:
select * from BUS_STOPS where ROUTES like '% 44,%';
…返回在列出的值之一中包含44的记录
那么,如何将静态值44替换为BUS_ROUTES表中ROUTES字段的值呢
巴士路线表如下所示:
…公共汽车站表如下所示:
我正在使用PostgreSQL查询GTFS数据。将字符串转换为数组,然后使用数组比较:
select *
from BUS_STOPS
where '44' = any(string_to_array(routes,',')
这也可用作连接条件:
select *
from BUS_STOPS s
join bus_routes r on string_to_array(s.routes,',') @> string_to_array(r.routes,',')
@>
是“contains”操作符,用于测试左侧数组(bus_stops.routes)是否包含右侧数组(bus_routes.routes
)中的所有元素。另一个选项是使用重叠运算符&&
-我不清楚您到底想要什么将字符串转换为数组,然后使用数组比较:
select *
from BUS_STOPS
where '44' = any(string_to_array(routes,',')
这也可用作连接条件:
select *
from BUS_STOPS s
join bus_routes r on string_to_array(s.routes,',') @> string_to_array(r.routes,',')
@>
是“contains”操作符,用于测试左侧数组(bus_stops.routes)是否包含右侧数组(bus_routes.routes
)中的所有元素。另一个选项是使用重叠操作符&&
-我不清楚您到底想要什么从公交车站选择…在公交车站,路线像“%44,%”;哦如果我想将其与公交线路的路线字段相匹配,该如何工作?你知道我的意思吗?好的。在这里,您应该填充您迄今为止所做的工作。请使用此问题的结果更新问题:select*from BUS_STOPS,其中路线为“%44,%”
@VaoTsun谢谢,我想我已经做了适当的更新。我现在可以开始了。你想合并两个表吗?。。显示BUS_路线的示例
tables从公交车站选择…路线,如“%44,%”;哦如果我想将其与公交线路的路线字段相匹配,该如何工作?你知道我的意思吗?好的。在这里,您应该填充您迄今为止所做的工作。请使用此问题的结果更新问题:select*from BUS_STOPS,其中路线为“%44,%”
@VaoTsun谢谢,我想我已经做了适当的更新。我现在可以开始了。你想合并两个表吗?。。显示公交线路样本
表格