如何在SQL列名中使用符号?

时间:2014-10-29 06:49:11

标签: sql oracle oracle8i

我尝试使用带有减号,点和其他几个符号的列名。 Oracle SQL解析器除了它们之外没有其他功能。像这样:

select
    a.ID as Article-Number, a.Name as Name
from
    Articles a
where
    (a.ID = '3264')

除了a.ID as 'Article-Number'"FROM keyword not found where expected"之外)它没有。我可以在列名中加上符号吗?

4 个答案:

答案 0 :(得分:4)

您可以使用双引号(")来转义别名和列名:

select
    a.ID as "Article-Number", a.Name as "Name"
from
    Articles a
where
    (a.ID = '3264')

答案 1 :(得分:2)

问题仅在Article-Number作为别名。别名name非常好。

SQL> select e.ename as name from emp e where rownum = 1;

NAME
----------
SMITH

SQL> select e.ename as Article-Number from emp e where rownum = 1;
select e.ename as Article-Number from emp e where rownum = 1
                         *
ERROR at line 1:
ORA-00923: FROM keyword not found where expected


SQL> select e.ename as "Article-Number" from emp e where rownum = 1;

Article-Nu
----------
SMITH

SQL>

因此,只有double-quotation的{​​{1}}标记才能作为转义Article-Number的别名。

答案 2 :(得分:2)

  

我可以在列名中包含符号吗?

     

我在这里自动化所有东西,所以我的所有别名都会得到双引号。重要的是我知道如何在别名中使用任何字符串。

在Oracle中,您使用双引号(")来转义架构名称(包括列名称)。

但是,如果您尝试自动化某些内容,则应注意以下几条规则:

  • 名称必须为1到30个字符。超过此限制的标识符将提升为ORA-00972: identifier is too long
  • 名称不能包含引号("),也不能包含\0(又名为nul)字符

有关详细信息,请参阅Oracle's Schema Object Naming Rules

答案 3 :(得分:0)

1。 我猜用括号[]

Select [Name@Symbol], [#Sharp!#Column] from Your table

在此之前,您需要使用此名称创建

2。 您可以使用同义词来使用2个或更多名称...

如果您需要这种方式发表评论。

TKU