Обсуждение: Array shift equivalent?
I'm trying to shift the first element off of an array, but I'm just
not getting it. I'm not necessarily interested in saving the rest of
the array. i just want to get the first element, which in this case
is another array.
# select * from arrays;
this_array_id | this_array
---------------+---------------------------------------------------
1 | {{foo,bar,baz},{afoo,abar,abaz},{bfoo,bbar,bbaz}}
(1 row)
I'd like to get {foo,bar,baz}.
My first try:
# select this_array[1] from arrays;
this_array
------------
(1 row)
# select this_array[1][1:3] from arrays;
this_array
-----------------
{{foo,bar,baz}}
(1 row)
This last one is close, but it's nested:
# select array_dims(this_array[1][1:3]) from arrays;
array_dims
------------
[1:1][1:3]
(1 row)
I'd like to get just a [1:3] array.
What am I missing? Thanks for any assistance.
Michael Glaesemann
grzm seespotcode net
Michael Glaesemann <grzm@seespotcode.net> writes:
> I'm trying to shift the first element off of an array, but I'm just
> not getting it. I'm not necessarily interested in saving the rest of
> the array. i just want to get the first element, which in this case
> is another array.
No, it isn't. What you've got is a 2-D array. I don't think there
is an operation that will produce a 1-D subset --- the array slice
subscript operation produces something that's smaller but still has
the same number of dimensions.
regards, tom lane
On Dec 7, 2006, at 0:26 , Tom Lane wrote: > Michael Glaesemann <grzm@seespotcode.net> writes: >> I'm trying to shift the first element off of an array, but I'm just >> not getting it. I'm not necessarily interested in saving the rest of >> the array. i just want to get the first element, which in this case >> is another array. > > No, it isn't. What you've got is a 2-D array. I don't think there > is an operation that will produce a 1-D subset --- the array slice > subscript operation produces something that's smaller but still has > the same number of dimensions. Thanks for the explanation and confirmation. I end up iterating over the elements of the subarray, so I worked around it by iterating over this_array[1][i]. Michael Glaesemann grzm seespotcode net