Thread: referencing column names properly

referencing column names properly

From
"Sill-II, Stephen"
Date:
I have a table called logs with several columns whose names have '-' in
them, e.g.   User-Name

I'm having trouble referencing these columns with SELECT statements.

What would the proper way to address these in a statement like this?

SELECT User-Name, max(Date), max(Time) from logs;

I want to return the last login date and time for each username.

Thanks
Stephen Sill II


Re: referencing column names properly

From
Bruno Wolff III
Date:
On Sat, Feb 08, 2003 at 18:34:31 -0500, "Sill-II, Stephen" <Stephen.Sill-II@ost.dot.gov> wrote:
> I have a table called logs with several columns whose names have '-' in
> them, e.g.   User-Name
> 
> I'm having trouble referencing these columns with SELECT statements.
> 
> What would the proper way to address these in a statement like this?
> 
> SELECT User-Name, max(Date), max(Time) from logs;

You need to use double quotes around the column name. When you do that
case will become significant. If you didn't quote the column name on
the create table command, then the name would have been converted to
lower case.


Re: referencing column names properly

From
"Ross J. Reedstrom"
Date:
On Sat, Feb 08, 2003 at 06:34:31PM -0500, Sill-II, Stephen wrote:
> I have a table called logs with several columns whose names have '-' in
> them, e.g.   User-Name
> 
> I'm having trouble referencing these columns with SELECT statements.
> 
> What would the proper way to address these in a statement like this?
> 
> SELECT User-Name, max(Date), max(Time) from logs;
SELECT "User-Name", max("Date"), max("Time") from logs;

Assuming the MulTiCasIng you show is also in the table. SQL lets you
put anything at all in an identifier (table or column name) as long
as you quote it with double-quotes (")

Ross


Re: referencing column names properly

From
"Sill-II, Stephen"
Date:
 Thanks much!  After much experimentation, I figured it out.  I remember
reading in the postgres oreily book that if you don't quote the identifiers,
that it converts them all to lowercase for processing.  Does the dash in the
name also require the name to be quoted?

Thanks again!
Stephen Sill II

-----Original Message-----
From: Ross J. Reedstrom
To: Sill-II, Stephen
Cc: 'pgsql-sql@postgresql.org'
Sent: 2/9/2003 12:50 AM
Subject: Re: [SQL] referencing column names properly

On Sat, Feb 08, 2003 at 06:34:31PM -0500, Sill-II, Stephen wrote:
> I have a table called logs with several columns whose names have '-'
in
> them, e.g.   User-Name
> 
> I'm having trouble referencing these columns with SELECT statements.
> 
> What would the proper way to address these in a statement like this?
> 
> SELECT User-Name, max(Date), max(Time) from logs;
SELECT "User-Name", max("Date"), max("Time") from logs;

Assuming the MulTiCasIng you show is also in the table. SQL lets you
put anything at all in an identifier (table or column name) as long
as you quote it with double-quotes (")

Ross


Re: referencing column names properly

From
"Ross J. Reedstrom"
Date:
On Sun, Feb 09, 2003 at 09:18:05AM -0500, Sill-II, Stephen wrote:
>  Thanks much!  After much experimentation, I figured it out.  I remember
> reading in the postgres oreily book that if you don't quote the identifiers,
> that it converts them all to lowercase for processing.  Does the dash in the
> name also require the name to be quoted?

Yup, so the expression parser can differentiate between a-b (column"a"
- column "b") and a-b (column named "a-b").

Ross