@
is an illegal character for an identifier in (standard) SQL.
The rules for valid (legal) identifiers that do not need double quotes are documented in the manuals:
The Postgres manual essentially quotes the SQL standard:
SQL identifiers and key words must begin with a letter (a-z, but also letters with diacritical marks and non-Latin letters) or an underscore (_). Subsequent characters in an identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($)
The Oracle manual essentially says the same:
Nonquoted identifiers can contain only alphanumeric characters from your database character set and the underscore (_), dollar sign ($), and pound sign (#).
Note that Oracle has one exception when it comes to DBLinks:
Database links can also contain periods (.) and "at" signs (@). Oracle strongly discourages you from using $ and # in nonquoted identifiers.
You can include a @
in an identifier if you use quoted identifiers. But the Oracle manual also states: Oracle does not recommend using quoted identifiers for database object names
#
. – Teejay Mar 31 at 15:08@
is illegal in a SQL identifier. – a_horse_with_no_name Mar 31 at 15:10