On Jan 10, 2005, at 6:00 PM, D. Richard Hipp wrote: > A user has reported a bug saying that SQLite does > not allow the '$' in the middle of indentifiers > (without quoting). The bug reports says that > statements like this: > > CREATE TABLE ex$1( col$abc INTEGER ); > > are legal and work fine in other database engines. > This seems very odd to me. Can anybody else > confirm the use of '$' in the middle of identifier > names in other database engines?
Firebird (and Interbase) use RDB$ as a prefix for many built-in names. The Interbase 6 Language Reference says > When an applications programmer or end user creates a database > object or refers to it by name, case is unimportant. The following > limitations on naming database objects must be observed: > Start each name with an alphabetic character (A�Z or a�z). > Restrict object names to 31 characters, including dollar signs > ($), underscores (_), 0 to 9, A to Z, and a to z. Some objects, such > as constraint names, are restricted to 27 bytes in length. My reading of the SQL-92 spec leads me to believe that this is an extension. The spec only seems to require <simple Latin letter> followed by <simple Latin letter> | <digit> where <simple Latin letter> is (A�Z or a�z). On the other hand, other characters are permitted based on a <module character set specification> if the character is "identified as a letter," "syllable," or "ideograph"; the only preclusion is that the <identifer>: > shall not include a <space> character or other <separator> e

