在SELECT语句中列的别名不松鼠SQL +火鸟工作(Column aliasing in SELE

2019-08-01 03:39发布

我试图在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

请享用。

Answer 1:

该问题是由于在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



Answer 2:

在松鼠这需要建立在:

文件>全球首选项>数据类型控件>检查: 使用列标签代替列名的结果头



文章来源: Column aliasing in SELECT statements doesn't work with SQuirrel SQL + Firebird