给出以下查询: 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);
}
但是,当我打印出这些值时,会得到以下结果:
燃料电池a
学士学位
至比基特(tc)c
没有办法使用jdbc忽略cast并从查询中获取实际名称吗?
1条答案
按热度按时间eqoofvh91#
对于表达式,默认列标签是完整表达式。
该示例显示了一个带有自定义标签的表达式(也称为派生列*)(
as C
)这就是返回给客户的东西。这是sql的标准行为。在这方面,所有表达式的处理方式都是相同的,类型转换没有允许“峰值原始列”的特殊处理方式。
长话短说:您应该将columnlabel视为预期的列名。
如果您绝对希望/需要从结果集中获取基列,并且您对所有限制都很满意,那么您可以从中手动解析结果
getColumnName
挑出任何铸造功能的括号内的东西。e、 g.如果你得到
TO_BIGINT( )
你在寻找两者之间的任何东西(
以及)
. 这是您可以从结果集导出的详细信息量。