From: | kvnsmnsn(at)cs(dot)byu(dot)edu |
---|---|
To: | pgsql-novice(at)postgresql(dot)org |
Subject: | how to conditionally append |
Date: | 2007-04-25 16:23:12 |
Message-ID: | 63128.67.137.192.66.1177518192.squirrel@mail.cs.byu.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Hello all,
I have a table that stores different parts of phone numbers in
different columns, namely <areacode> for the first three digits,
<exchangenumber> for the next three digits, <last4digits> for the next
four digits, and <ext> for any extension the phone number might have.
The first three are stored as <smallint>s and <ext> is stored as a
<varchar( 20)>.
The suggested way to display the whole phone number is:
SELECT
( lpad( areacode , 3, '0') || lpad( exchangenumber, 3, '0')
|| lpad( last4digits, 4, '0') || trim( ext))
as phone
FROM
input_table;
The problem with this is that sometimes <ext> is <NULL>, and apparent-
ly a <NULL> value concatenated with any kind of character string al-
ways results in a <NULL> value. At least that's the results I've been
getting; every time I try this SQL command with <ext> as <NULL> I get
the empty string, even though I _know_ that the other three columns
have actual values.
Is there any way I can write a <SELECT> statement that only ap-
pends <trim( ext)> to the other columns _if_ <ext> is not <NULL>, and
that only appends the first three columns together otherwise? Any
pointers on this question would be greatly appreciated.
---Kevin Simonson
"You'll never get to heaven, or even to LA,
if you don't believe there's a way."
from _Why Not_
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2007-04-25 16:32:40 | Re: how to conditionally append |
Previous Message | Daniel T. Staal | 2007-04-25 15:57:57 | Re: International Date formats |