update field using substrings of another field

Started by Dave [Hawk-Systems]over 22 years ago4 messagesgeneral
Jump to latest
#1Dave [Hawk-Systems]
dave@hawk-systems.com

Have a table with fnumber and number, both text
fnumber is a phone number, format "8005551212"
number needs to be the same number but in the format "(800) 555-1212"

we currently run the following each time the list is updated;
update pnums set number='(' || substring(fnumber from 1 for 3) || ') ' ||
substring(fnumber from 4 for 3) || '-' || substring(fnumber from 7 for 4);

is there a way to statically set that number field so that it always equals the
fnumber in that format, or automatically updates itself when the fnumber field
is changed?

thanks

Dave

#2Doug McNaught
doug@mcnaught.org
In reply to: Dave [Hawk-Systems] (#1)
Re: update field using substrings of another field

"Dave [Hawk-Systems]" <dave@hawk-systems.com> writes:

Have a table with fnumber and number, both text
fnumber is a phone number, format "8005551212"
number needs to be the same number but in the format "(800) 555-1212"

we currently run the following each time the list is updated;
update pnums set number='(' || substring(fnumber from 1 for 3) || ') ' ||
substring(fnumber from 4 for 3) || '-' || substring(fnumber from 7 for 4);

is there a way to statically set that number field so that it always
equals the fnumber in that format, or automatically updates itself
when the fnumber field is changed?

You could do it fairly easily with a trigger.

-Doug

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Doug McNaught (#2)
Re: update field using substrings of another field

Doug McNaught <doug@mcnaught.org> writes:

"Dave [Hawk-Systems]" <dave@hawk-systems.com> writes:

Have a table with fnumber and number, both text
fnumber is a phone number, format "8005551212"
number needs to be the same number but in the format "(800) 555-1212"

You could do it fairly easily with a trigger.

Or consider plan B: why bother to actually store "number" at all,
if it is trivially computable from "fnumber"?

You could make a view that includes "number" as a derived column,
if you have apps that insist on seeing it as an ordinary-looking
column in the select result.

regards, tom lane

#4Andreas Fromm
Andreas.Fromm@physik.uni-erlangen.de
In reply to: Dave [Hawk-Systems] (#1)
Re: update field using substrings of another field

Wouldn't it be the correct way to do such things just on retrieve of the
data, i.e. to implement the formatted output on the appication layer, or
maybe via a View, so that you don't save the data twice?

Doug McNaught wrote:

"Dave [Hawk-Systems]" <dave@hawk-systems.com> writes:

Have a table with fnumber and number, both text
fnumber is a phone number, format "8005551212"
number needs to be the same number but in the format "(800) 555-1212"

we currently run the following each time the list is updated;
update pnums set number='(' || substring(fnumber from 1 for 3) || ') ' ||
substring(fnumber from 4 for 3) || '-' || substring(fnumber from 7 for 4);

is there a way to statically set that number field so that it always
equals the fnumber in that format, or automatically updates itself
when the fnumber field is changed?

You could do it fairly easily with a trigger.

-Doug

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
Andreas Fromm

-----------------------------
Drink wet cement...
... and get stoned