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

Posted

技术标签:

【中文标题】如何使从 oracle 返回的结果集保持其列别名字符大小写【英文标题】:How to make the resultset returned from oracle keeps its column aliases characters case 【发布时间】:2011-03-09 10:05:01 【问题描述】:

我正在尝试针对 oracle 数据库查询一些 sql 语句。

我正在使用Java ResultSetMetaData 获取列别名(通过:rsmd.getColumnLable()

查询看起来像:

select part_id partId, part_num partNumber from tbl;

但结果集元数据为我返回别名分别为 partidpartnumber ...

但我需要获取用户选择的相同字符大小写的别名,所以我需要分别获取为partIdpartNumber

如何做到这一点?

谢谢。

【问题讨论】:

【参考方案1】:

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

select part_id "partId", part_num "partNumber" from tbl;

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

【讨论】:

作为旁注,值得指出的是,引用的别名并不像未引用的别名一样对待。例如,我可以通过不带引号的别名而不是带引号的别名进行排序。 @rimsky 这是不正确的 - 您可以通过任何别名订购。 SELECT 123 AS "a" FROM DUAL ORDER BY "a" 将起作用,SELECT 123 AS a FROM DUAL ORDER BY "A" 也将起作用。 Oracle 区分大小写 - 但是默认行为是将任何未加引号的标识符转换为大写,以从用户那里抽象出区分大小写;带引号的标识符保留大小写。所以标识符a(小写不带引号)和"A"(大写带引号)是相同的标识符,因为第一个将转换为大写并匹配第二个。

以上是关于如何使从 oracle 返回的结果集保持其列别名字符大小写的主要内容,如果未能解决你的问题,请参考以下文章

如何使Oracle过程返回结果集

oracle存储过程如何输出结果集

在oracle里,多条返回结果,如何只能返回一条

Oracle中函数如何返回结果集

oracle 如何返回多条记录

C#中如何把Oracle数据库查询的结果集返回