Thread: delete item[5] from varchar[] array???
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/
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
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
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
--- 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
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
--- 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