• pg数组类型


    数据库版本

    postgres=# SELECT version(); 
    version---------------------------------------------------------------------------------------------------------- 
    PostgreSQL 9.6.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
    (1 row)

    1,创建表

    postgres=# CREATE TABLE test_array1(id int,array_i int[],arrat_t text[]);
    CREATE TABLE

    数组类型插入

    postgres=# SELECT '{1,2,3}',array[1,2,3]; 
    ?column? | array
    ----------+--------- 
    {1,2,3} | {1,2,3}
    (1 row) postgres=# INSERT INTO test_array1 values(1,'{1,2,3}','{a,b,c}'); INSERT 0 1 postgres=# INSERT INTO test_array1 values(2,array[1,2,3],array['a','b','c']); INSERT 0 1

    查询数组类型

    postgres=# SELECT array_i,arrat_t FROM test_array1; 
    array_i | arrat_t
    ---------+--------- 
    {1,2,3} | {a,b,c} {1,2,3} | {a,b,c}
    (2 rows)
    postgres=# SELECT array_i[1],arrat_t[3] FROM test_array1; 
    array_i | arrat_t
    ---------+--------- 
    1 | c 1 | c
    (2 rows)

    2,数组元素的追加、删除、更新

    追加

    postgres=# SELECT ARRAY_APPEND(array[1,2,3],4); 
    array_append
    -------------- 
    {1,2,3,4}
    (1 row)
    postgres=# SELECT array[1,2,3]||4; 
    ?column?
    ----------- 
    {1,2,3,4}
    (1 row)

    删除

    postgres=# SELECT ARRAY_REMOVE(ARRAY[1,1,2,3],1);
    array_remove
    -------------- 
    {2,3}
    (1 row)

    修改

    postgres=# UPDATE test_array1 SET array_i[2] = 1 WHERE id = 1;
    UPDATE 1
    postgres=# UPDATE test_array1 SET array_i = array[1,2,4] WHERE id = 2;
    UPDATE 1

    3,数组操作符

    postgres=# SELECT ARRAY[1.1,2.2,3.2]::int[] = array[1,2,3];--等于 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2,3] != array[1,2,4];--不等于 
    ?column?
    ----------
     t
    (1 row)
    postgres=# SELECT ARRAY[1,2,4] > array[1,2,3];--大于 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2,3] < array[1,2,4];--小于 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2,4] >= array[1,2,3];--大于或等于 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2,3] <= array[1,2,4];--小于或等于 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2,3] @> array[1,2];--包含 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT ARRAY[1,2] <@ array[1,2,3];--被包含 
    ?column?
    ---------- 
    t
    (1 row)
    postgres=# SELECT array[1,2]||array[3,4];--串联 
    ?column?
    ----------- {1,2,3,4}
    (1 row)
    postgres=# SELECT array[1,2]||array[[3,4],[5,6]];--串联 
    ?column?
    --------------------- 
    {{1,2},{3,4},{5,6}}
    (1 row)

    4,数组函数

    获取数组维度

    postgres=# SELECT ARRAY_NDIMS(ARRAY[1,2,3]); 
    array_ndims
    ------------- 
    1
    (1 row)

    获取数组长度

    postgres=# SELECT ARRAY_LENGTH(ARRAY[1,2,3],1); 
    array_length
    -------------- 
    3
    (1 row)

    返回数组元素第一次出现的位置

    postgres=# SELECT ARRAY_POSITION(ARRAY[1,1,2,3],2);
    array_position
    ---------------- 
    3
    (1 row)

    替换数组中的相同组元素

    postgres=# SELECT ARRAY_REPLACE(ARRAY[1,1,2],1,2); array_replace
    --------------- 
    {2,2,2}
    (1 row)

    将数组输出到字符串

    postgres=# SELECT ARRAY_TO_STRING(ARRAY['a','b',null,'c'],',','5');--null转为后面指定字符 
    array_to_string
    ----------------- 
    a,b,5,c
    (1 row)
  • 相关阅读:
    HDU 跑跑卡丁车
    螺旋模型
    原型模型
    CSS匹配规则参考
    索引调优
    动态加载外部css或js文件
    des算法的C#实现
    @@RowCount和“SET NOCOUNT ON”在触发器中使用的先后顺序引起的问题
    WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
    Sql获取星期几的方法
  • 原文地址:https://www.cnblogs.com/jinli1771/p/15000096.html
Copyright © 2020-2023  润新知