Обсуждение: Quotation marks in queries

Поиск
Список
Период
Сортировка

Quotation marks in queries

От
"Martynas Brijunas"
Дата:
Hello,

I am a total newbie to PostgreSql, coming from MS Access background. I have
a question regarding queries in PostgreSql: why do I need to enclose every
field name and table name in quotation marks like

SELECT "Name" From "contacts"

That is a major inconvenience when composing a query string in a VB program.
Thank you.



Re: Quotation marks in queries

От
"Gregory S. Williamson"
Дата:
This is only really necessary if the table or column names are mixed cases or include spaces or some such ... normally
(?)this is not required. PostgreSQL relentlessly lower cases such names unless they are double quoted. 

HTH,

Greg Williamson
DBA
GlobeXplorer LLC

-----Original Message-----
From:    pgsql-general-owner@postgresql.org on behalf of Martynas Brijunas
Sent:    Thu 7/14/2005 12:31 AM
To:    pgsql-general@postgresql.org
Cc:
Subject:    [GENERAL] Quotation marks in queries
Hello,

I am a total newbie to PostgreSql, coming from MS Access background. I have
a question regarding queries in PostgreSql: why do I need to enclose every
field name and table name in quotation marks like

SELECT "Name" From "contacts"

That is a major inconvenience when composing a query string in a VB program.
Thank you.



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@postgresql.org so that your
       message can get through to the mailing list cleanly

!DSPAM:42d6173839122069320068!





Re: Quotation marks in queries

От
"Relyea, Mike"
Дата:
You only need to use quotes in your SQL statements if your table names
in PostgreSQL contain any upper case letters.  PostgreSQL automatically
converts all of your SQL statements to lower case unless they're quoted.

As an alternative to quoting in VB (assuming you're using Access as your
FE), store your SQL in tables where you can quote it correctly instead
of having to use " & chr(34) & " or """" every time you want to insert a
quote in VB.

Mike




-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of Martynas
Brijunas
Sent: Thursday, July 14, 2005 3:32 AM
To: pgsql-general@postgresql.org
Subject: [GENERAL] Quotation marks in queries

Hello,

I am a total newbie to PostgreSql, coming from MS Access background. I
have
a question regarding queries in PostgreSql: why do I need to enclose
every
field name and table name in quotation marks like

SELECT "Name" From "contacts"

That is a major inconvenience when composing a query string in a VB
program.
Thank you.



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@postgresql.org so that your
       message can get through to the mailing list cleanly

Re: Quotation marks in queries

От
Russ Brown
Дата:
How difficult would it be to add a configuration option (at the global,
database or session level) to make PostgreSQL transparently quote
identifiers for you? That would be a simple way to allow users to use
case-sensitive names without quoting everything manually or changing
deep parts of the back end to support case insensitivity.

I'd certainly welcome such a feature...

Relyea, Mike wrote:
> You only need to use quotes in your SQL statements if your table names
> in PostgreSQL contain any upper case letters.  PostgreSQL automatically
> converts all of your SQL statements to lower case unless they're quoted.
>
> As an alternative to quoting in VB (assuming you're using Access as your
> FE), store your SQL in tables where you can quote it correctly instead
> of having to use " & chr(34) & " or """" every time you want to insert a
> quote in VB.
>
> Mike
>
>
>
>
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Martynas
> Brijunas
> Sent: Thursday, July 14, 2005 3:32 AM
> To: pgsql-general@postgresql.org
> Subject: [GENERAL] Quotation marks in queries
>
> Hello,
>
> I am a total newbie to PostgreSql, coming from MS Access background. I
> have
> a question regarding queries in PostgreSql: why do I need to enclose
> every
> field name and table name in quotation marks like
>
> SELECT "Name" From "contacts"
>
> That is a major inconvenience when composing a query string in a VB
> program.
> Thank you.
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that your
>        message can get through to the mailing list cleanly
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>


Re: Quotation marks in queries

От
Tony Caduto
Дата:
The easiest solution is just not to use caps or spaces in your
table/object names, there is no advantage to doing so.
People just need to get over the fact that having caps in a name make it
easier to read.

My Test Table  should be my_test_table,  the naming makes no difference
to the application using the table.

Same thing with ordering of fields in a table, it makes no difference
other than for looks if the fields are in the order you want them
to be in.

It is much more of a pain to qoute your sql than it is to have it look nice.

Just my 2 cents on the subject.

Tony

Relyea, Mike wrote:

>You only need to use quotes in your SQL statements if your table names
>in PostgreSQL contain any upper case letters.  PostgreSQL automatically
>converts all of your SQL statements to lower case unless they're quoted.
>
>As an alternative to quoting in VB (assuming you're using Access as your
>FE), store your SQL in tables where you can quote it correctly instead
>of having to use " & chr(34) & " or """" every time you want to insert a
>quote in VB.
>
>Mike
>
>
>
>


Re: Quotation marks in queries

От
Peter Fein
Дата:
Tony Caduto wrote:
> The easiest solution is just not to use caps or spaces in your
> table/object names, there is no advantage to doing so.
> People just need to get over the fact that having caps in a name make it
> easier to read.

Not to pick nits, but I disagree. Capitalization (CamelCase in
particular) can make it easier to determine at a glance what type of
object a name refers to.  While this can be determined from syntax, it's
nice not to have to think about it. ;)

> It is much more of a pain to qoute your sql than it is to have it look
> nice.

Certainly. Things don't look very nice with quotes all over the place.

--
Peter Fein                 pfein@pobox.com                 773-575-0694

Basically, if you're not a utopianist, you're a schmuck. -J. Feldman

Re: Quotation marks in queries

От
Russ Brown
Дата:
Tony Caduto wrote:
> The easiest solution is just not to use caps or spaces in your
> table/object names, there is no advantage to doing so.
> People just need to get over the fact that having caps in a name make it
> easier to read.
>
> My Test Table  should be my_test_table,  the naming makes no difference
> to the application using the table.
>

I agree about the spacing part (though others wouldn't and who am I to
tell them what to think?), but from a personal point of view I vastly
prefer camel caps to underscores in all situations. It's a pain for me
to have to use lower case + underscores in the database when the rest of
my code uses camel caps. It's also a pain to have to quote all
identifiers to be able to use camel caps. Providing a config option to
silently quote all identifiers submitted would solve the problem without
 having any effect on those who like the underscore style.

> Same thing with ordering of fields in a table, it makes no difference
> other than for looks if the fields are in the order you want them
> to be in.
>

Agreed, but having the fields ordered logically can be a form of
self-documentation. i.e. having the PK always at the start, grouping
closely-related fields together etc. The application using the table
should definitely not depends on field ordering though.

> It is much more of a pain to qoute your sql than it is to have it look
> nice.
>

Absolutely! That's why I was wondering about a configuration option to
make pg automatically quote all identifiers.

> Just my 2 cents on the subject.
>
> Tony
>
> Relyea, Mike wrote:
>
>> You only need to use quotes in your SQL statements if your table names
>> in PostgreSQL contain any upper case letters.  PostgreSQL automatically
>> converts all of your SQL statements to lower case unless they're quoted.
>>
>> As an alternative to quoting in VB (assuming you're using Access as your
>> FE), store your SQL in tables where you can quote it correctly instead
>> of having to use " & chr(34) & " or """" every time you want to insert a
>> quote in VB.
>>
>> Mike
>>
>>
>>
>>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>


Re: Quotation marks in queries

От
teknokrat
Дата:
Tony Caduto wrote:
> The easiest solution is just not to use caps or spaces in your
> table/object names, there is no advantage to doing so.
> People just need to get over the fact that having caps in a name make it
> easier to read.
>
> My Test Table  should be my_test_table,  the naming makes no difference
> to the application using the table.
>
> Same thing with ordering of fields in a table, it makes no difference
> other than for looks if the fields are in the order you want them
> to be in.
>
> It is much more of a pain to qoute your sql than it is to have it look
> nice.
>
> Just my 2 cents on the subject.
>

The problem we have is that we want to migrate to postgresql from our
current sql server db, but the problem with caps requiring quotes around
them makes this a far from easy migration.

Re: Quotation marks in queries

От
Roman Neuhauser
Дата:
# teknokrat@yahoo.com / 2005-07-20 12:43:48 +0100:
> Tony Caduto wrote:
> >The easiest solution is just not to use caps or spaces in your
> >table/object names, there is no advantage to doing so.
> >People just need to get over the fact that having caps in a name make it
> >easier to read.
> >
> >My Test Table  should be my_test_table,  the naming makes no difference
> >to the application using the table.
> >
> >Same thing with ordering of fields in a table, it makes no difference
> >other than for looks if the fields are in the order you want them
> >to be in.
> >
> >It is much more of a pain to qoute your sql than it is to have it look
> >nice.
> >
> >Just my 2 cents on the subject.
> >
>
> The problem we have is that we want to migrate to postgresql from our
> current sql server db, but the problem with caps requiring quotes around
> them makes this a far from easy migration.

    Just so that it doesn't look like your problems are caused by
    PostgreSQL: it is in accordance with SQL:1999, with the exception
    that SQL says "fold to uppercase", but PostgreSQL folds to lowercase.

    IOW, if you require that "table" <> "Table" <> "TABLE", then SQL is
    the wrong langaue.

--
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

Re: Quotation marks in queries

От
Martijn van Oosterhout
Дата:
On Wed, Jul 20, 2005 at 12:43:48PM +0100, teknokrat wrote:
> The problem we have is that we want to migrate to postgresql from our
> current sql server db, but the problem with caps requiring quotes around
> them makes this a far from easy migration.

The rule is pretty much, either always quote or never quote. Once you
start mixing and matching you're likely to get screwed.

So, if you don't use quotes in the CREATE TABLE statement, you'll never
have to quote anywhere else either...

Have this helps,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.

Вложения

Re: Quotation marks in queries

От
Tony Caduto
Дата:
well, you could always write a little function that would loop through
every object and then rename to lower case and replace all spaces with _
underscores.  Then in your application code just rename everything
accordingly.

Once again, even if you are using M$ SQL server it would be a good idea
to avoid filenames with caps and spaces, I guess just keep that in mind
for future projects.  I have converted large access databases where the
users just used whatever the heck they wanted just by renaming
everything and it did not take that long.  It would be worth it in the
long run to do.

Good luck with your conversion.

Tony Caduto
http://www.amsoftwaredesign.com
Home of PG Lighting Admin for Postgresql 8.x

teknokrat wrote:

> The problem we have is that we want to migrate to postgresql from our
> current sql server db, but the problem with caps requiring quotes
> around them makes this a far from easy migration.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>


Re: Quotation marks in queries

От
Tony Caduto
Дата:
That's a really good point about the create table, you can actually just
rename everything in you create table statements before you actually do
any data
import, then as long as the fields are in the same physical order(does
not matter if the names are different) you can output data from the
source system as tab delimited and then use the
postgresql copy command to import the tab delimited file to postgresql.

Tony Caduto
http://www.amsoftwaredesign.com
Home of PG Lightning Admin for Postgresql 8.x

>
>So, if you don't use quotes in the CREATE TABLE statement, you'll never
>have to quote anywhere else either...
>
>Have this helps,
>
>