• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            PostgreSQL: 數(shù)組類型(array) 的使用

            http://francs3.blog.163.com/blog/static/405767272011103105752290/
              PostgreSQL 支持數(shù)組類型,包括一維數(shù)組和多維數(shù)組,在某些應(yīng)用場合數(shù)組的應(yīng)用還是很需要的,
            這里簡單介紹下一維數(shù)組的使用及有關(guān)數(shù)組函數(shù)和操作符的使用。
              
              
            --定義數(shù)組
            mydb=> create table test_array(id serial primary key, phone int8[]);
            NOTICE:  CREATE TABLE will create implicit sequence "test_array_id_seq" for serial column "test_array.id"
            NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_array_pkey" for table "test_array"
            CREATE TABLE

            mydb=> \d test_array
                                       Table "mydb.test_array"
             Column |   Type   |                        Modifiers                       
            --------+----------+---------------------------------------------------------
             id     | integer  | not null default nextval('test_array_id_seq'::regclass)
             phone  | bigint[] |
            Indexes:
                "test_array_pkey" PRIMARY KEY, btree (id)


            --數(shù)組元素插入有兩種方式
            mydb=> insert into test_array(phone) values ('{1,2}');
            INSERT 0 1
            mydb=> insert into test_array(phone) values ('{2,3}');
            INSERT 0 1

            mydb=> insert into test_array(phone) values (array[3,4,5]);
            INSERT 0 1

            mydb=> select * From test_array;
             id |  phone 
            ----+---------
              1 | {1,2}
              2 | {2,3}
              3 | {3,4,5}
            (3 rows)


            --數(shù)組元素的引用
            mydb=> select phone  from test_array where id=1;
             phone
            -------
             {1,2}
            (1 row)

            mydb=> select phone[1],phone[2]  from test_array where id=1;
             phone | phone
            -------+-------
                 1 |     2
                
                
                
            一 常見的數(shù)組操作(Array Operators)

            PostgreSQL: 數(shù)組類型(array) 的使用 - francs - My DBA LIFE

             

            --equal
            mydb=>  select array[1,2]=array[1.1,2.1]::int[];
             ?column?
            ----------
             t
            (1 row)

            --not equal
            mydb=> select array[1,2] <> array[1,2,3];
             ?column?
            ----------
             t
            (1 row)


            --less than
            mydb=> select ARRAY[1,2,3] < ARRAY[1,2,4];
             ?column?
            ----------
             t
            (1 row)


            --greater than
            mydb=> select ARRAY[1,4,3] > ARRAY[1,2,4];
             ?column?
            ----------
             t
            (1 row)


            --contains
            mydb=> select ARRAY[1,4,3] @> ARRAY[3,1];
             ?column?
            ----------
             t
            (1 row)


            --is contained by
            mydb=> select ARRAY[2,7] <@ ARRAY[1,7,4,2,6];
             ?column?
            ----------
             t
            (1 row)


            --overlap (have elements in common)
            mydb=> select ARRAY[1,4,3] && ARRAY[2,1];
             ?column?
            ----------
             t
                

            二 常見數(shù)組函數(shù)( Array Functions )
            --將數(shù)據(jù)元素追加到數(shù)組
            mydb=> select array_append(array[2,3,4],5);
             array_append
            --------------
             {2,3,4,5}
            (1 row)

            --連接兩個數(shù)組
            mydb=> select array_cat(array[1,2],array[3,4]);
             array_cat
            -----------
             {1,2,3,4}
            (1 row)

            --獲得數(shù)組的維度
            mydb=> select array_ndims(array[1,2,3]);
             array_ndims
            -------------
                       1
            (1 row)

            mydb=> select array_ndims(array[[1,2,3],[4,5,6]]);
             array_ndims
            -------------
                       2
            (1 row)


            --獲得數(shù)組的長度                                 ^
            mydb=> select array_length(array[1,2,3],1);
             array_length
            --------------
                        3
            (1 row)

            mydb=> select array_length(array[[1,2],[2,3]],1);
             array_length
            --------------
                        2
            (1 row)


            三 intarray 模塊的數(shù)組函數(shù)
            --獲取元素個數(shù)據(jù)總和
            mydb=> select icount(array[1,2]);
             icount
            --------
                  2
            (1 row)

            mydb=> select icount(array[[1,2],[2,3]]);
             icount
            --------
                  4
            (1 row)


            --排序
            mydb=> select sort_asc(array[4,8,7]);
             sort_asc
            ----------
             {4,7,8}
            (1 row)

            mydb=> select sort_desc(array[4,8,7]);
             sort_desc
            -----------
             {8,7,4}
            (1 row)

            mydb=> select sort_desc(array[[4,8,7],[8,9,7]]);
                 sort_desc    
            -------------------
             {{9,8,8},{7,7,4}}
            (1 row)


            四 intarray 模塊的數(shù)組操作符

            PostgreSQL: 數(shù)組類型(array) 的使用 - francs - My DBA LIFE

             

            --表數(shù)據(jù)
            mydb=> select * from test_array;
             id |  phone 
            ----+---------
              1 | {1,2}
              2 | {2,3}
              3 | {3,4,5}
              4 | {4,5,6}
              5 | {4,5,7}
            (5 rows)


            --查找包括相同元素的記錄
            mydb=> select id ,phone from test_array where phone && array[1,2]::int8[];
             id | phone
            ----+-------
              1 | {1,2}
              2 | {2,3}
            (2 rows)


            --查找數(shù)組元素的交集
            mydb=> select array[1,2,3] & array[3,4,5];
             ?column?
            ----------
             {3}
            (1 row)


            五 索引的使用
              
                      數(shù)組支持創(chuàng)建 GiST 和 GIN 類型索引,這兩類索引的選擇要根據(jù)場合,簡單的說, GIN 類型索引在查詢上要比
              GiST 類型索引快,但在 update 的時候要慢些,所以 GIN 類型索引適合表數(shù)據(jù)不太變化的場合,而 GiST 索引適用
              于表數(shù)據(jù)經(jīng)常需要 UPDATE 的場景。

            posted on 2012-06-08 16:04 多彩人生 閱讀(1469) 評論(0)  編輯 收藏 引用 所屬分類: postgresql

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            精品久久久久久无码中文野结衣 | 久久se这里只有精品| 精品国产91久久久久久久| 久久国产高清字幕中文| 国产精品VIDEOSSEX久久发布| 久久成人精品| 久久精品夜夜夜夜夜久久| 99久久精品国产一区二区蜜芽| 综合久久给合久久狠狠狠97色 | 国产精品久久自在自线观看| 激情久久久久久久久久| 亚洲中文久久精品无码ww16| 欧美伊香蕉久久综合类网站| 99久久做夜夜爱天天做精品| 女人香蕉久久**毛片精品| 97久久国产露脸精品国产| 91久久精品国产91性色也| 伊人久久大香线蕉av不卡| 久久久久久久久波多野高潮| 亚洲欧美成人综合久久久| 久久―日本道色综合久久| 亚洲乱码日产精品a级毛片久久 | 亚洲av伊人久久综合密臀性色| 亚洲嫩草影院久久精品| 久久久久亚洲精品天堂| 麻豆精品久久久久久久99蜜桃| 久久精品中文字幕第23页| 亚洲一本综合久久| 国内精品久久久久影院日本| 伊人久久大香线蕉亚洲五月天| 尹人香蕉久久99天天拍| 久久免费99精品国产自在现线| 欧美激情精品久久久久| 久久亚洲国产欧洲精品一| 2021少妇久久久久久久久久| 亚洲va久久久噜噜噜久久男同| 久久天天躁夜夜躁狠狠躁2022| 久久午夜夜伦鲁鲁片免费无码影视| 久久久久亚洲AV无码专区网站| 久久国产视频99电影| 久久久久国产成人精品亚洲午夜|