给定以下查询:SELECT fc as A, sc as B, TO_BIGINT(tc) as C from....
我想从结果集中获取列名fc
、sc
、tc
我执行以下操作:
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 )
,你就要查找(
和)
之间的任何内容。这是您可以从结果集中获得的详细信息量。