PostgreSQL:陣列——型別、運算子和函式
PostgreSQL 的機會定義為可變長度的多維陣列的列一個表。任何內建或使用者定義的基本型別陣列,列舉型別,或者可以建立複合型。
操作
宣告
陣列型別可以宣告為:
CREATE TABLE monthly_savings ( name text, saving_per_quarter integer[], scheme text[][] );
或透過使用關鍵字“ARRAY”:
CREATE TABLE monthly_savings ( name text, saving_per_quarter integer ARRAY[4], scheme text[][] );
插入值
陣列的值可以插入一個文字常量,內附大括號內的元素值,並用逗號將它們隔開。例子如下:
INSERT INTO monthly_savings VALUES ('Manisha', '{20000, 14600, 23500, 13250}', '{{"FD", "MF"}, {"FD", "Property"}}');
訪問
用於訪問陣列的一個例子如下所示。下面的命令將選擇人員,他們儲存在第二,第四個。
SELECT name FROM monhly_savings WHERE saving_per_quarter[2] > saving_per_quarter[4];
修改
修改陣列的一個例子如下所示。
UPDATE monthly_savings SET saving_per_quarter = '{25000,25000,27000,27000}' WHERE name = 'Manisha';
或陣列表示式語法:
UPDATE monthly_savings SET saving_per_quarter = ARRAY[25000,25000,27000,27000] WHERE name = 'Manisha';
尋找
搜尋陣列的一個例子如下所示。
SELECT * FROM monthly_savings WHERE saving_per_quarter[1] = 10000 OR saving_per_quarter[2] = 10000 OR saving_per_quarter[3] = 10000 OR saving_per_quarter[4] = 10000;
如果陣列的大小是已知的上述搜尋方法都可以使用。否則,下面的例子說明如何時要搜尋的大小是不知道的。
SELECT * FROM monthly_savings WHERE 10000 = ANY (saving_per_quarter);
運算子
運算子 | 含義 | 示例 |
---|---|---|
=/<> | ARRAY[1,2,3] = ARRAY[1,2,3] | |
=/<> | ARRAY[1,2] = ARRAY[1,2,3] | |
=/<> | ARRAY[[1,2,3] = ARRAY[1,2,3] | |
=/<> | ARRAY[[1,2],[3,4]] = ARRAY[[3,4],[1,2]] | |
=/<> | ARRAY[1.1,2.2,3.3]::int[] = ARRAY[1,2,3] | |
</> | ARRAY[1,1] < ARRAY[1,1,1] | |
</> | ARRAY[1,2] < ARRAY[1,1,1] | |
</> | ARRAY[1,2] < ARRAY[[1,2]] | |
</> | ARRAY[1,3] < ARRAY[[1,2]] | |
</> | ARRAY[1,2,3] < ARRAY[[1,2]] | |
</> | ARRAY[1,2,3] < ARRAY[[1,2],[3,1]] | |
</> | ARRAY[1,2,3] < ARRAY[[1,2],[2,1]] | |
<=/>= | ARRAY[1,2] >= ARRAY[[1,2]] | |
@>/<@ | 包含 | ARRAY[1, 2, 3] @> ARRAY[1, 2] |
@>/<@ | 包含 | ARRAY[[1, 2, 3]] @> ARRAY[[1, 2], [2, 3]] |
&& | 重疊 | ARRAY[1, 2, 3] && ARRAY[3, 4] |
&& | 重疊 | ARRAY[[1, 2], [3, 4]] && ARRAY[4, 5] |
|| | 連線 | ARRAY[1, 2] || ARRAY[3, 4] = ARRAY[1,2,3,4] |
|| | 連線 | ARRAY[1, 2] || ARRAY[[3, 4], [5, 6]] = [[1,2],[3,4],[5,6]] |
|| | 連線 | 1 || ARRAY[2, 3] = ARRAY[1, 2, 3] |
函式
名稱 | 描述 | 示例 | 結果 |
---|---|---|---|
array_cat | 連線兩個陣列,返回新陣列 | array_cat(ARRAY[1, 2], ARRAY[3, 4]) | [1,2,3,4] |
array_ndims | 返回陣列的維度,返回值型別為 int | array_ndims(ARRAY[1, 2, 3]) | 1 |
array_length | 返回陣列指定維度的長度,維度數是有由第二個引數指定的 | array_length(ARRAY[1, 2, 4], 1) | 3 |
array_lower | 返回陣列的下標 | ||
array_upperer | 返回陣列的上標 | ||
array_prepend | 在陣列的開頭插入一個元素 | array_prepend(7, ARRAY[8, 9]) | [7,8,9] |
array_remove | 移除陣列中為指定值的元素,只支援一維陣列 | array_remove(ARRAY[1, 2, 3], 2) | [1,3] |
array_replace | 把陣列中等於指定值元素的值用另一個指定值替代 | array_replace(ARRAY[1, 4, 3], 4, 2) | [1,2,3] |
array_to_string | 使用指定的分隔符(第二個引數) 將陣列元素連線為字串 | array_to_string(ARRAY[1,2,3], ',') | '1,2,3' |
string_to_array | 用指定的分隔符分隔的字串轉成陣列 | string_to_array('1,2,3', ',') | [1,2,3] |
unnest | 把陣列變成多行返回 | ||
array_agg | 聚合函式 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2738436/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL:數字——型別、運算子和函式SQL型別函式
- PostgreSQL:時間——型別、運算子和函式SQL型別函式
- PostgreSQL:網路地址——型別、運算子和函式SQL型別函式
- PostgreSQL 陣列型別使用詳解SQL陣列型別
- 資料型別和運算子資料型別
- PostgreSQL:字元——型別及函式SQL字元型別函式
- 介紹PostgreSQL的陣列型別FUSQL陣列型別
- java練習——任務1.1——資料型別、運算子、控制語句、陣列、表示式的使用Java資料型別陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- php運算子運用之型別運算子該如何使用PHP型別
- 型別轉換運算子型別
- GO語言————4.5 基本型別和運算子Go型別
- Java中的資料型別和運算子Java資料型別
- JAVA基礎--資料型別和運算子Java資料型別
- 資料型別和運算子測試題資料型別
- 資料型別與函式索引-PostgreSQL篇資料型別函式索引SQL
- 1:賦值運算子函式賦值函式
- C++ 過載運算子和過載函式C++函式
- Dart函式、類和運算子-處理資訊Dart函式
- php型別運算子的使用PHP型別
- c語言-運算子,陣列,指標C語言陣列指標
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- TypeScript 陣列型別TypeScript陣列型別
- 過載運算子、解構函式函式
- day02 go的資料型別和運算子Go資料型別
- Python運算子和表示式Python
- 7.PHP陣列和字串常用函式PHP陣列字串函式
- 陣列展平函式陣列函式
- PHP 陣列函式妙用PHP陣列函式
- 巧用 PHP 陣列函式PHP陣列函式
- 陣列處理函式陣列函式
- PHP 陣列常用函式PHP陣列函式
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- Python 筆記 - 課時4 - 變數型別和運算子Python筆記變數型別
- PostgreSQL Array 陣列型別與 FreeSql 打出一套【組合拳】SQL陣列型別
- SQLServer型別text運算子不相容SQLServer型別
- ## 運算子和方法的區別
- JavaScript學習筆記(二)——函式和陣列JavaScript筆記函式陣列