我试图在SELECT语句中添加一个列别名使用SQL松鼠3.4 + 1.5火鸟+ JDBC驱动程序2.2 Jaybird [0 | 1]。(JVM 1.7.0_03),但不工作。 别名列显示与列的原始名称。 在另一个工具(DBExpert)相同的语句工作正常。
声明 : SELECT column1 AS alias1, column2 FROM table;
结果列名SquirrelSQL: column1 - column2
结果列名DBExpert: alias1 - column2
尝试添加“和”绕别名,也不能正常工作。
有人有一个想法?
编辑:我的JDBC驱动程序Jaybird更新至2.2.1版(发布九月/ 30)和问题仍然存在。
编辑2:问题解决!
该problenm是由松鼠SQL的默认偏好造成的。
要修复它,进入“文件” - >“全局设置”,在选项卡“数据类型控制”发现“将军(适用于所有类型)”和标记组合框“使用列标签,而不是在结果标题列名”。
见截图: http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622
请享用。
该问题是由于在JDBC规范混乱(至少在历史上),并在Jaybird关于它在结果集元数据COLUMNNAMES和columnLabels报告的变化。 据我所知,在JDBC 2.0和更早的版本,列名和columnLabel之间的区别是没有明确界定,因此在几乎所有情况下getColumnName()
返回的值相同getColumnLabel()
(即,如果指定的AS别名)。
用JDBC 3.0更清晰的区别是由:在columnName
是成为在一个表中(如果有的话)的底层列的名称,所述columnLabel
是,如果所指定的AS-别名和否则columnName
。 Jaybird 2.1.6及更早版本用于为返回相同的值getColumnLabel()
和getColumnName()
(即columnLabel
),这是在Jaybird 2.2改变。
显然,松鼠默认的非JDBC兼容的选项columnName
,而不是columnLabel
。 正如你已经发现:有一个选项得到它使用columnLabel
代替。 你有另一种选择是使用Jaybird 2.2.1或更高版本,并添加连接属性columnLabelForName=true
。
在松鼠这需要建立在:
文件>全球首选项>数据类型控件>检查: 使用列标签代替列名的结果头
文章来源: Column aliasing in SELECT statements doesn't work with SQuirrel SQL + Firebird