如何使从oracle返回的结果集保持其列别名字符大小写

Muh*_*edy 6 java oracle metadata jdbc resultset

我正在尝试查询一些sql statment againest oracle数据库.

我使用Java ResultSetMetaData,以获得列别名(通过:rsmd.getColumnLable())

查询看起来像:

select part_id partId, part_num partNumber from tbl;

但结果集元数据回报我的别名partid,并partnumber分别...

但我需要在相同的字符情况下,用户选择的别名,所以我需要得到它partIdpartNumber分别.

怎么做到这一点?

谢谢.

Jör*_*ann 16

默认情况下,列名和别名不区分大小写,如果要在oracle语句中保留大小写,可以引用如下名称:

select part_id "partId", part_num "partNumber" from tbl;
Run Code Online (Sandbox Code Playgroud)

在我的测试中,列名称在不使用引号时以大写形式返回,因此行为可能还取决于jdbc驱动程序的版本.

  • @rimsky这是不正确的 - 您可以通过任何别名订购.`SELECT 123 AS"a"FROM DUAL ORDER BY"a"将起作用,因此将`SELECT 123 as a FROM DUAL ORDER BY"A"`.Oracle区分大小写 - 但是默认行为是将任何不带引号的标识符转换为大写,以便将区分大小写的内容从用户中抽象出来; 引用的标识符保留了案例.因此标识符"a"(小写未加引号)和""A"(大写引号)是相同的标识符,因为第一个将被转换为大写并匹配第二个. (3认同)