代码之家  ›  专栏  ›  技术社区  ›  John

如何将一个函数中的多个值选择到单独的列中?

  •  0
  • John  · 技术社区  · 6 年前

    SELECT
        *
    FROM (
        SELECT 
            getlatlng("geom")
        FROM
            mytable
    ) AS subquery;
    

    它回来了

    (-121.9,36.4)
    (-117.1,32.9)
    (-121.9,36.5)
    (-71.2,42.6)
    

    我想写信

    SELECT
        subquery.lat, subquery.lon 
    FROM (
        SELECT 
            getlatlng("mygeom")
        FROM
            mytable
    ) AS subquery;
    

    lat  | lon
    -------------
    36.4 | -121.9
    32.9 | -117.1
    36.5 | -121.9
    42.6 | -71.2
    

    下面是函数的相关位。

    CREATE OR REPLACE FUNCTION getlatlng(geom geometry, OUT longitude text, OUT latitude text)
     RETURNS record
     LANGUAGE sql
     IMMUTABLE
    AS $function$
    SELECT ...;
    $function$
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   MarcinJ    6 年前

    尝试:

    SELECT (p).longitude, (p).latitude FROM (
        SELECT getlatlng("mygeom") p 
          FROM mytable
    ) subquery
    

    OUT 函数的参数定义返回的记录的列。

    Example fiddle