postgresql 数组类型
发布时间:2020-12-13 17:08:51 所属栏目:百科 来源:网络整理
导读:--pg支持数组,且支持分片访问,比如[1:2],任意只有一个数字(没有冒号)的维数是从 1 开始到声明的数字为止的 --如果任意维数被写为一个片段,也就是,包含一个冒号,那么所有维数都被当做是片段If any dimension is written as a slice,i.e.,contains a co
--pg支持数组,且支持分片访问,比如[1:2],任意只有一个数字(没有冒号)的维数是从 1 开始到声明的数字为止的 --如果任意维数被写为一个片段,也就是,包含一个冒号,那么所有维数都被当做是片段 If any dimension is written as a slice,i.e.,contains a colon,then all dimensions are treated as slices. Any dimension that has only a single number (no colon) is treated as being from 1 to the number specified. For example,[2] is treated as [1:2],as in this example: SELECT schedule[1:2][2] FROM sal_emp WHERE name = 'Bill'; --任何数组的当前维数都可以用 array_dims 函数检索: SELECT array_dims(schedule) FROM sal_emp WHERE name = 'Carol'; array_dims ------------ [1:2][1:2] --也可以用 array_upper 和 array_lower 函数分别返回数组特定维的上界和下界: SELECT array_upper(schedule,1) FROM sal_emp WHERE name = 'Carol' --如果数组本身或任何下标表达式是 NULL ,那么该数组的下标表达式也将生NULL 。 从一个数组的当前范围之外抓取数据将生成一个 NULL ,而不是导致错误 --array_length可用于返回指定维数的长充 SELECT array_length(schedule,1) FROM sal_emp WHERE name = 'Carol'; array_length -------------- 2 --cardinality 返回任意维数的元素个数 --cardinality returns the total number of elements in an array across all dimensions. It is effectively the number of rows a call to unnest would yield: SELECT cardinality(schedule) FROM sal_emp WHERE name = 'Carol'; cardinality ------------- 4 --更新指定索引的数组值 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'; --可以通过给一个尚不存在数组元素赋值的办法扩大数组, 所有位于原数组最后一个元素和这个新元素之间的未赋值元素都将设为 NULL 。 --例如,如果 myarray数组当前有 4 个元素, 在对 myarray[6]赋值之后它将拥有 6 个元素,其中myarray[5] 的值将为 NULL --检索数组中是否包含任一元素,或者包含所有的元素 SELECT * FROM sal_emp WHERE 10000 = ANY (pay_by_quarter); SELECT * FROM sal_emp WHERE 10000 = ALL (pay_by_quarter); --检索数组包含元素的索引,注意第一个函数匹配第一次满足条件的,第二个函数匹配所有的满足条件的 SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat','mon'],'mon'),array_positions(ARRAY[1,4,3,1,2,1],1); array_position | array_positions ----------------+----------------- 2 | {1,8} --数组运算中的一些比较符 运算符 描述 a = b 立方体a和b是相同的 a && b 立方体a和b重叠 a @> b 立方体a包含立方体b a <@ b 立方体a被包含在立方体b中 [a,b] < [c,d] 小于 [a,b] > [c,d] 大于 postgres=# select array[1,3],array[2,4]; array | array ---------+--------- {1,3} | {2,4} --两个群组中是否有重叠 postgres=# select array[1,3]&&array[2,4]; ?column? ---------- t --第一个数组是否包含第二个数组 postgres=# select array[1,3]@>array[2,4]; ?column? ---------- f postgres=# select array[1,3]; ?column? ---------- t --第一个数组是否被第二个数组包含 postgres=# select array[1,3]<@array[2,3]; ?column? ---------- f postgres=# select array[1,3]<@array[1,4]; ?column? ---------- t (1 row) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 如何通过Windows Phone 8中的Assembly.Load动态加载程
- ajax基础说明
- 在ruby中获取给定键的键值对哈希值
- c# – StructureMap:如何设置接口的特定具体实例以使用特定
- flex: VerifyError: Error #1053 Illegal override of remo
- oracle – 有免费的虚拟播放器用于商业用途吗?
- 【PostgreSQL】 media-wiki的地址
- react-native – 以编程方式读取app.json(或exp.json)
- javascript将字符串中的多个空格替换为一个空格的正则实例
- Cocos2d-x游戏性能优化分享大赛 奖最新技术图书