如何在PostgreSQL中的逗号分隔列表(数组)中找到第二个值?

时间:2016-08-16 15:43:12

标签: sql postgresql ms-access

我试图在字段中获取第二个值来填充查询中的列。 例如:

data.PNG

我能够使用MS Access完成此操作,SQL语句如下所示:

    SELECT stone_schedules.mach_equip_id,
    stone_schedules.timeline,
    IIf(InStr(1,Mid([timeline],InStr(1,[timeline],",")+1),",")=0,0,Mid(Mid([timeline],InStr(1,[timeline],",")+1),1,InStr(1,Mid([timeline],InStr(1,[timeline],",")+1),",")-1)) AS NextSchedEntry_id
    FROM stone_schedules
    WHERE (((stone_schedules.active)<>"0"));

在Access中而不是在服务器上运行它的问题是它运行得太慢而且服务器端能够更快地运行它。这是我到目前为止在pgAdmin中的服务器端:

    SELECT 
      schedules.mach_equip_id, 
      schedules.timeline,
      --select function where I need help 
    FROM 
      stone.schedules
    WHERE
    schedules.active = true;

由于

1 个答案:

答案 0 :(得分:1)

我能够找到比ms访问解决方案更容易的答案,我的猜测可能更便宜。 当值像这样分开并在花括号内部时,它是一个数组。 我可以使用以下sql语句选择数组的第二个值。

    SELECT 
      schedules.mach_equip_id,
      schedules.timeline,
      schedules.timeline[2]  -- using brackets made it possible to select the 2nd value
    FROM 
      stone.schedules
    WHERE
      schedules.active = true;

这比我想象的要容易。