[TL;DR] 最简单的做法是永远不要在对象名称周围使用双引号,而让 oracle 以默认方式管理区分大小写。
默认情况下,Oracle 数据库区分大小写;但是,默认情况下,它们也会将所有内容都转换为大写,以便从您(用户)那里抽象出区分大小写。
CREATE TABLE Test ( column_name NUMBER );
然后:
SELECT COUNT(column_name) FROM test;
SELECT COUNT(Column_Name) FROM Test;
SELECT COUNT(COLUMN_NAME) FROM TEST;
SELECT COUNT(CoLuMn_NaMe) FROM tEsT;
SELECT COUNT("COLUMN_NAME") FROM "TEST";
都会给出相同的输出并且:
DESCRIBE test;
输出:
Name Null Type
----------- ---- ------
COLUMN_NAME NUMBER
(注意:Oracle 的默认行为是将名称转换为大写。)
如果您使用双引号,那么 oracle 将尊重您在对象名称中使用大小写(然后您需要始终使用相同的大小写):
CREATE TABLE "tEsT" ( "CoLuMn_NaMe" NUMBER );
(注意:表名和列名都用双引号括起来,现在要求您在引用它们时使用完全相同的大小写和引号。)
那么你只能这样做(因为你需要尊重区分大小写):
SELECT COUNT("CoLuMn_NaMe") FROM "tEsT";
和
DESCRIBE "tEsT";
输出:
Name Null Type
----------- ---- ------
CoLuMn_NaMe NUMBER
(注意:Oracle 尊重区分大小写。)