<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 概述 pgsql 指定對數組的操作 ## 數組操作符 |符號|說明|示例 |---|---|--| |anyarray @> anyarray → boolean|第一個數組是否包含第二個數組|ARRAY[1,4,3] @> ARRAY[3,1,3] → t| |anyarray <@ anyarray → boolean|第一個數組包含在第二個數組中么?|ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t| | anyarray && anyarray → boolean | 是否有交集 | ARRAY[1,4,3] && ARRAY[2,1] → t| |anyarray || anyarray → anyarray | 連接兩個數組|ARRAY[1,2,3] || ARRAY[4,5,6,7] → {1,2,3,4,5,6,7} | |anyelement || anyarray → anyarray | 元素追加到數組前| 3 || ARRAY[4,5,6] → {3,4,5,6}| | anyarray || anyelement → anyarray 元素追加到數組后 | ARRAY[4,5,6] || 7 → {4,5,6,7} | ## 數組類型 ### 聲明數組 創建帶數組的表 ``` CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); ``` 可指定長度 ``` CREATE TABLE tictactoe ( squares integer[3][3] ); ``` > 然而,當前的實現忽略任何提供的數組尺寸限制,即其行為與未指定長度的數組相同。 > 在`CREATE TABLE`中聲明數組的尺寸或維度數僅僅只是文檔而已,它并不影響運行時的行為 ### 插入數組 多維數組必須有相同的長度,否則會報錯 ``` INSERT INTO sal_emp VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {"training", "presentation"}}'); ``` 效果 ``` SELECT * FROM sal_emp; name | pay_by_quarter | schedule -------+---------------------------+------------------------------------------- Bill | {10000,10000,10000,10000} | {{meeting,lunch},{training,presentation}} Carol | {20000,25000,25000,25000} | {{breakfast,consulting},{meeting,lunch}} ``` ### 訪問數組 數組的索引從0 開始,如果小標超過實際大小,只返回空,不會拋異常 ```sql --查詢不等于的值 SELECT name FROM sal_emp WHERE pay_by_quarter[1] <> pay_by_quarter[2]; --查詢某個數組值 SELECT pay_by_quarter[3] FROM sal_emp; -- 查詢數組切片 SELECT pay_by_quarter[1:3] FROM sal_emp; SELECT * FROM sal_emp WHERE pay_by_quarter[1] = 10000 OR pay_by_quarter[2] = 10000 OR pay_by_quarter[3] = 10000 OR pay_by_quarter[4] = 10000; --or SELECT * FROM sal_emp WHERE 10000 = ANY (pay_by_quarter); -- 查詢都為1000的值 SELECT * FROM sal_emp WHERE 10000 = ALL (pay_by_quarter); -- 拼接數組 SELECT ARRAY[1,2] || ARRAY[3,4]; -- 輸出 ?column? ----------- {1,2,3,4} ``` ### 修改數組 ```sql -- 整體更新數組 UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}' WHERE name = 'Carol'; -- or UPDATE sal_emp SET pay_by_quarter = ARRAY[25000,25000,27000,27000] WHERE name = 'Carol'; -- 更新個別數組 UPDATE sal_emp SET pay_by_quarter[4] = 15000 WHERE name = 'Bill'; -- 更新切片 UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}' WHERE name = 'Carol'; ``` ### 復合類型 ``` CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric ); CREATE TABLE on_hand ( item inventory_item, count integer ); INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000); ``` 避免獲取操作與 表字段一樣,用括號進行區別 ``` SELECT item.name FROM on_hand WHERE item.price > 9.99; //改 SELECT (item).name FROM on_hand WHERE (item).price > 9.99; //ro SELECT (on_hand.item).name FROM on_hand WHERE (on_hand.item).price > 9.99; ``` ### 相關函數 * `array_append`:向數組尾部添加元素; * `array_cat`:拼接兩個數組; * `array_remove`:刪除某個元素; * `array_replace`:替換某個元素; * `tags @> '{test}'`:是否包含某個元素; * `array_to_string`:數組以特定連接符連接并且以字符串形式返回; * `array_dims` 返回數組的維度 * `array_length` 返回數組的維度 ``` select tags, ? //執行結果: {1,2,3,test} ? ? ? array_append(tags, '9') as array_append, //執行結果: {1,2,3,test,9} ? ? ? array_cat(tags, tags) as array_cat, //執行結果: {1,2,3,test,1,2,3,test} ? ? ? array_remove(tags, 'test'), //執行結果: {1,2,3} ? ? ? array_replace(tags, 'test', 'TEST'), //執行結果: {1,2,3,TEST} ? ? ? tags @> '{test}', //執行結果: true ? ? ? array_to_string(tags, ',') //執行結果: 1,2,3,TEST from t1 where id = 1; ``` ### 使用php pdo 處理數組 使用php 處理 pgsql 的數組,把數組轉為 json,在通過php的json_decode 處理 ``` $stmt = $pdo->query("SELECT array_to_json(myarray) FROM mytable"); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); $myarray = json_decode($result[0]['array_to_json'], true); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看