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

ulydmbyx  于 2023-01-20  发布在  Oracle
关注(0)|答案(4)|浏览(163)

我尝试使用带有减号、点和其他一些符号的列名。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")之外,它不起作用。列名中可以有符号吗?

juud5qan

juud5qan1#

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

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

5m1hhzi42#

问题只出在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>

因此,只有Article-Number作为别名时才需要double-quotation标记来转义-

uttx8gqw

uttx8gqw3#

列名中可以有符号吗?
我在这里自动化了一些东西,所以我所有的别名都会有双引号。重要的是我知道如何在别名中使用任何字符串。
在Oracle中,您可以使用双引号(")来转义模式名称(包括列名)。
但是,如果您尝试将事情自动化,则应该注意以下几条规则:

  • 名称必须为1到30个字符。超过此限制的标识符将引发

ORA-00972: identifier is too long

  • 名称不能包含引号(")或\0(aka nul)字符

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

monwx1rj

monwx1rj4#

1.我想使用括号[]

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

在此之前,您需要使用以下名称创建
2.您可以使用同义词来使用2个名称或更多...
如果你需要这种方式在评论说。
土库

相关问题