Subject Re: [ib-support] Case sensisitive table and field names
Author Helen Borrie
At 07:29 AM 28-08-02 +0000, you wrote:
>Does Firebird support Mixedcase Table and Field names in SQL Statements
>without using delimiters. I have created a Dialec 3 Database with a Table
>called IOPorts with fields PortAddr, CurValue, OldValue, Etc all in mixed case.
>If I do a select on this table it fails with Table IOBoards not found, If
>I delimit 'IOBoards' it works. This seems like strange behaviour to me.

If you want to have case-sensitive identifiers, then you have no option but
to use double-quote identifiers.

Firebird by default treats all identifiers as case-insensitive and stores
them in upper case. It looks as if you have been the victim of a database
admin tool that forces quoted identifiers by default and either doesn't
give you Firebird's default option or does give you the option and you
didn't take it.

>I want to convert my existing applications running against Sybase Anywhere
>to Firebird but this problem means that I would have to change ALL my SQL
>queries. I know I could get around the problem by converting all the
>table and field names to upper-case but I don't like that naming style.

As long as your Sybase tables don't contain illegal characters or use
keywords, you can script the identifiers in CamelCase; but the fact
remains that they will be stored in upper case unless they are
double-quoted; and that will make them case-sensitive.

So, without double-quoting, your existing queries will work just fine if
you use CamelCase; but database admin tools will display them in uppercase
because that is how they are stored.

>I'm not up on SQL standards but my unstanding was that only reserved words
>or names containing spaces needed to be delimited with ".


>I have not used any other SQL database that required Uppercase Table and
>Field names to work properly.

Firebird's default is not to require them; but you have to choose your
tools carefully.

>If this capability is not supported at the moment will it be in the future.

Not applicable.