婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當(dāng)前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

    PostgreSQL 對數(shù)組的遍歷操作

     2021-05-21 16:53  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

      阿里云優(yōu)惠券 先領(lǐng)券再下單

    這篇文章主要介紹了PostgreSQL 對數(shù)組的遍歷操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧。

    PostgreSQL 提供了數(shù)組類型。

    我來演示下如何具體使用

    創(chuàng)建一個(gè)有數(shù)組類型字段的表。

    1create table test_array(id serial primary key, str1 int[][][]);

    插入兩條測試數(shù)據(jù)。

    insert into test_array values (1,array[[[1,2],[3,4],[5,6]],[[20,30],[40,50],[70,100]]]);
    insert into test_array values (2,array[[[100,200],[300,400],[500,600]],[[2000,3000],[4000,5000],[7000,10000]]]);

     

    為了能直觀的看到結(jié)果集,我們得把數(shù)組的值換成普通的類型拿出來, 有以下幾種方法。

    不帶分片的遍歷,

    create or replace function sp_array2table_simple(
    anyarray
    )
    returns table (element int) as
    $ytt$
    declare array1 alias for $1;
     x int;
    begin
     drop table if exists tmp_1;
     create temporary table tmp_1 (id int);
     
     <<label1>> foreach x in array array1
     loop
     insert into tmp_1 values (x);
     end loop label1;
     
     return query select * from tmp_1;
    end;
    $ytt$ language plpgsql;
     
    t_girl=#select sp_array2table_simple(str1) as array_list from test_array where id = 2;
     
     array_list
    ------------
      100
      200
      300
      400
      500
      600
      2000
      3000
      4000
      5000
      7000
      10000
    (12 行記錄)
     
    時(shí)間:7.780 ms

     

    帶分片的遍歷:

    create or replace function sp_array2table(
    anyarray
    )
    returns table (element int) as
    $ytt$
    declare array1 alias for $1;
     x int[];
     nlen int := 0;
     i int := 1;
    begin
     drop table if exists tmp_1;
     create temporary table tmp_1 (id int);
     
     <<label1>> foreach x slice 1 in array array1
     loop
      nlen := array_length(x,1);
      i := 1;
      <<label2>> while i <= nlen loop
      insert into tmp_1 values (x[i]);
      i := i + 1;
      end loop label2;
     end loop label1;
     
     return query select * from tmp_1;
    end;
    $ytt$ language plpgsql;
     
    t_girl=#select sp_array2table(str1) as array_list from test_array where id = 2;
     
     array_list
    ------------
      100
      200
      300
      400
      500
      600
      2000
      3000
      4000
      5000
      7000
      10000
    (12 行記錄)
     
    時(shí)間:20.139 ms

     

    還有就是系統(tǒng)系統(tǒng)了幾個(gè)函數(shù),直接進(jìn)行遍歷,

    比如unnest

    t_girl=#select unnest(str1) as array_list from test_array where id = 2;
     
     array_list
    ------------
      100
      200
      300
      400
      500
      600
      2000
      3000
      4000
      5000
      7000
      10000
    (12 行記錄)
     
    時(shí)間:1.002 ms

     

    比如array_to_string 等。

    t_girl=#select regexp_split_to_table(array_to_string(str1,','),',+') as array_list from test_array where id = 2;
     
     array_list
    ------------
     100
     200
     300
     400
     500
     600
     2000
     3000
     4000
     5000
     7000
     10000
    (12 行記錄)
     
    時(shí)間:0.850 ms

     

    補(bǔ)充:PostgreSQL遍歷Json

    SQL:

    SELECT
     orderno,
     fromno,
     fromamount,
     fromlotno ->> 'index' fromlotno,
     othercondition ->> 'supplicode' supplicode,
     othercondition ->> 'downcode' downcode,
     othercondition ->> 'spec' spec,
     othercondition ->> 'carport' carport
    FROM
     (
     SELECT
     orderno,
     fromno,
     fromamount,
     json_array_elements (fromlotno) fromlotno,
     json_array_elements (othercondition) othercondition
     FROM
     t_feather_source
     ) A

     

    輸出結(jié)果:

    文章來源:腳本之家

    來源地址:https://www.jb51.net/article/204921.htm

    申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

    相關(guān)文章

    熱門排行

    信息推薦