有没有一种方法可以在SAPHanajdbc驱动程序中获取已广播列的名称



给定以下查询:SELECT fc as A, sc as B, TO_BIGINT(tc) as C from....

我想从结果集中获取列名fcsctc
我执行以下操作:

ResultSet rs = statment.executeQuery(query);
ResultSetMetData rsmd = rs.getMetaData();
for(int i = 1; i <= rsmd.getColumnCount(); i++){
System.out.println(rsmd.getColumnName(i) + " " + rsmd.getColumnLabel(i);
}

然而,当我打印出值时,我会得到以下内容:

fc

sc B

TO_BIGINT(tc(c

难道没有办法使用jdbc忽略强制转换并从查询中获取实际名称吗?

对于表达式,默认列标签是完整表达式。

该示例显示了一个带有自定义标签(as C(的表达式(又名派生列*(,这就是返回给客户端的内容。这是SQL的标准行为。

在这方面,所有表达式都被相同地处理,并且类型转换没有允许";峰值原始列";。

长话短说:您应该将ColumnLabel视为预期的列名。

如果您绝对希望/需要从结果集中获取基列,并且您对所有限制都很满意,那么您可以手动解析getColumnName中的结果,并选择任何强制转换函数的括号内的内容。

例如,如果你得到TO_BIGINT( abc ),你就要查找()之间的任何内容。这是您可以从结果集中获得的详细信息量。

最新更新