Oracle如何选择具有自定义名称

时间:2018-06-04 12:01:35

标签: sql oracle

我正在使用复杂的选择查询,我想选择具有某种特定格式的列名,但是oracle只给我一个大写字母。

select no_constat as noFolder from cef_constat;
oracle给了我:

**nofolder**
value
value
value

我希望列名称如此noFolder

我希望大写字母中的'F'

你知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:5)

试试这个:

select nofolder as "noFolder" from your_table;

这样可行,因为引用的标识符不会折叠为大写。

详情请见the manual

答案 1 :(得分:2)

默认情况下,Oracle数据库区分大小写;但是,默认情况下,它们还会将所有内容转换为大写字母,以便从用户那里抽象出区分大小写。

这很有用,你可以这样做:

SELECT no_constat FROM cef_constat;
SELECT NO_CONSTAT FROM CEF_CONSTAT;
SELECT No_Constat FROM Cef_Constat;
SELECT No_CoNsTaT FROM CeF_CoNsTaT;

并且它们都给出了相同的结果,但数据库将应用其默认行为并将标识符转换为大写。

但是,如果您使用双引号,那么oracle将尊重您对案例的使用。在您的示例中,您需要为列名称设置区分大小写的别名(并且列名和表名可以包含任何大小写):

SELECT no_constat as "noFolder" FROM cef_constat;
SELECT NO_CONSTAT as "noFolder" FROM CEF_CONSTAT;
SELECT No_Constat as "noFolder" FROM Cef_Constat;
SELECT No_CoNsTaT as "noFolder" FROM CeF_CoNsTaT;

或者您甚至可以对所有标识符强制区分大小写(通过双引号),在这种情况下,您需要使用存储在数据字典中的确切大小写,对于表名和列名,它是大写的:

SELECT "NO_CONSTAT" as "noFolder" FROM "CEF_CONSTAT";