Thread: delete item[5] from varchar[] array???

delete item[5] from varchar[] array???

From
Matthew Peter
Date:
How is it possible to delete an item from a single
dimension varchar[] array? Lets say it has the values
{1,2,3,4,5,6}... how do i delete at position [4]?

Could this be done in a SQL statement or a function? I
appreciate any help. Thank you

MP

    
______________________________________________________ 
Yahoo! for Good 
Donate to the Hurricane Katrina relief effort. 
http://store.yahoo.com/redcross-donate3/ 



Re: delete item[5] from varchar[] array???

From
Michael Fuhr
Date:
On Wed, Sep 21, 2005 at 06:56:36PM -0700, Matthew Peter wrote:
> How is it possible to delete an item from a single
> dimension varchar[] array? Lets say it has the values
> {1,2,3,4,5,6}... how do i delete at position [4]?

I'm not sure if there's a better way, but you could concatenate the
slices adjacent to the position you want to delete:

test=> SELECT a FROM foo;      a       
---------------{1,2,3,4,5,6}
(1 row)

test=> UPDATE foo SET a = a[1:3] || a[5:6];
UPDATE 1
test=> SELECT a FROM foo;     a      
-------------{1,2,3,5,6}
(1 row)

-- 
Michael Fuhr


Re: delete item[5] from varchar[] array???

From
Tom Lane
Date:
Matthew Peter <survivedsushi@yahoo.com> writes:
> How is it possible to delete an item from a single
> dimension varchar[] array?

AFAIR there is no built-in function for this, but it seems like you
could write a generic polymorphic function for it easily enough.
        regards, tom lane


Re: delete item[5] from varchar[] array???

From
Matthew Peter
Date:
Ya. I didn't see any in the \df.  If it's so simple
could you show me one? PLEEEEEEEEEEEASE 

Thanks
MP

--- Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Matthew Peter <survivedsushi@yahoo.com> writes:
> > How is it possible to delete an item from a single
> > dimension varchar[] array?
> 
> AFAIR there is no built-in function for this, but it
> seems like you
> could write a generic polymorphic function for it
> easily enough.
> 
>             regards, tom lane
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Re: delete item[5] from varchar[] array???

From
Matthew Peter
Date:

--- Michael Fuhr <mike@fuhr.org> wrote:

> On Wed, Sep 21, 2005 at 06:56:36PM -0700, Matthew
> Peter wrote:
> > How is it possible to delete an item from a single
> > dimension varchar[] array? Lets say it has the
> values
> > {1,2,3,4,5,6}... how do i delete at position [4]?
> 
> I'm not sure if there's a better way, but you could
> concatenate the
> slices adjacent to the position you want to delete:
> 
> test=> SELECT a FROM foo;
>        a       
> ---------------
>  {1,2,3,4,5,6}
> (1 row)
> 
> test=> UPDATE foo SET a = a[1:3] || a[5:6];
> UPDATE 1
> test=> SELECT a FROM foo;
>       a      
> -------------
>  {1,2,3,5,6}
> (1 row)
> 
> -- 
> Michael Fuhr
> 


I sure hope there is a better way :) There must be an
easy, native way to interface with arrays. We all know
programming languages have ways to delete items in an
array natively, it just needs to be exposed.


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


Re: delete item[5] from varchar[] array???

From
Michael Fuhr
Date:
On Fri, Sep 23, 2005 at 10:02:44AM -0700, Matthew Peter wrote:
> --- Michael Fuhr <mike@fuhr.org> wrote:
> > test=> UPDATE foo SET a = a[1:3] || a[5:6];
>
> I sure hope there is a better way :) There must be an
> easy, native way to interface with arrays.

Hoping a thing is true doesn't mean it must be true :-)

> We all know programming languages have ways to delete items in an
> array natively, it just needs to be exposed.

No, we don't all know that because it isn't generally true, or else
you're using a loose definition of "natively."  Languages differ
in what capabilities they offer "natively."

contrib/intarray implements an intarray_del_elem() function,
presumably because the core product doesn't offer that capability,
or at least didn't when the module was written.  If you think it's
there just waiting to be exposed, then dig into the source code and
expose it :-)

-- 
Michael Fuhr


Re: delete item[5] from varchar[] array???

From
Matthew Peter
Date:
--- Michael Fuhr <mike@fuhr.org> wrote:

> On Fri, Sep 23, 2005 at 10:02:44AM -0700, Matthew
> Peter wrote:
> > --- Michael Fuhr <mike@fuhr.org> wrote:
> > > test=> UPDATE foo SET a = a[1:3] || a[5:6];
> >
> > I sure hope there is a better way :) There must be
> an
> > easy, native way to interface with arrays.
> 
> Hoping a thing is true doesn't mean it must be true
> :-)
> 
> > We all know programming languages have ways to
> delete items in an
> > array natively, it just needs to be exposed.
> 
> No, we don't all know that because it isn't
> generally true, or else
> you're using a loose definition of "natively." 
> Languages differ
> in what capabilities they offer "natively."
> 
> contrib/intarray implements an intarray_del_elem()
> function,
> presumably because the core product doesn't offer
> that capability,
> or at least didn't when the module was written.  If
> you think it's
> there just waiting to be exposed, then dig into the
> source code and
> expose it :-)
> 
> -- 
> Michael Fuhr
> 

Yes. I should've said "most" and some thanks to libs.
I'm busy in other source which is why I hoped those
who were already engulfed in pg's source would have a
solution... Thought this functionality may be
around... somewhere.... which is why I asked. 

Took a brief look at intarray_del_elem() function you
mentioned. This may be perfect, and then some. I'll
play around with it. Thanks 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com