在插入 PostgreSQL 之前剪切列的内容

cut the content of a column before insertion PostgreSQL

我有一张 table 照片,其中有两列(name_photo 和 code_support):

我正在寻找的结果:

我想剪切由管道分隔的 name_photo 字段的数据,所以我这样做了:

CREATE OR REPLACE FUNCTION string_to_rows(text) RETURNS SETOF TEXT AS $$ 
  DECLARE
    elems text[];      
  BEGIN
    elems :=   string_to_array(, '|');
    FOR i IN array_lower(elems, 1) .. array_upper(elems, 1) LOOP
      RETURN NEXT elems[i];
    END LOOP;
    RETURN;
  END
$$ LANGUAGE plpgsql;

现在如何使用此功能在插入照片之前裁剪我的字段 table?提前谢谢你

您不需要为此编写函数。内置的 string_to_arrayunnest() 函数将执行您想要的操作:

select t.name, p.code_support
from photos p
  cross join unnest(string_to_array(p.nom_photo, '|')) as t(name)

unnest() 将数组的元素转换为行。