如何使从 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;
但结果集元数据为我返回别名分别为 partid
和 partnumber
...
但我需要获取用户选择的相同字符大小写的别名,所以我需要分别获取为partId
和partNumber
。
如何做到这一点?
谢谢。
【问题讨论】:
【参考方案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 返回的结果集保持其列别名字符大小写的主要内容,如果未能解决你的问题,请参考以下文章