我尝试使用带有减号,点和其他几个符号的列名。 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"
之外)它没有。我可以在列名中加上符号吗?
答案 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中,您使用双引号("
)来转义架构名称(包括列名称)。
但是,如果您尝试自动化某些内容,则应注意以下几条规则:
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