Well, the easiest general way is probably a plperl function, but I think the following may work for your specific case:
update mytable set property_id=substr(property_id, 1, position('-' in property_id)-1) where position('-' in property_id)!=0; On Thu, 18 Oct 2001, Steve Frampton wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hello: > > I've got a table containing property_id's with values of the form > ###-####. I would like to discard the slash onwards (and I can't use a > substr() because I am not guaranteed if a) the -#### portion exists, b) > what position it exists from. > > If this were a text file, I would use a sed expression such as: > > cat textfile | sed 's/-.*$//' > > I've been looking for a way to do this with PostgreSQL but so far haven't > found a function that seems to be suitable. I thought maybe I could do it > with translate, but translate doesn't appear to work with regular > expressions. So far I've tried things like: > > select translate(property_id, '-.*', '') from mytable; > > I need to do this, because the -.* portion of my property_id was entered > in error, and I would like to do an update on the entire table and just > have the left-hand side of the property_id column remaining. ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]