我尝试使用 SQuirrel SQL 3.4 + Firebird 1.5 + Driver JDBC Jaybird 2.2.[0|1] (JVM 1.7.0_03) 在 SELECT 语句中添加列别名,但不起作用。别名列与列的原始名称一起出现。在另一个工具(DBExpert)中,相同的语句可以正常工作。
陈述: SELECT column1 AS alias1, column2 FROM table;
SquirrelSQL 中的结果列名称: column1 - column2
DBExpert 中的结果列名称: alias1 - column2
尝试在别名周围添加 ' 和 " ,但也不起作用。
有人有主意吗?
编辑:我将 JDBC Jaybird 驱动程序更新到 2.2.1 版本(9 月 30 日发布),问题仍然存在。
编辑2:问题已解决!
该问题是由 Squirrel SQL 的默认首选项引起的。
要修复此问题,请转到“文件”->“全局首选项”,在“数据类型控件”选项卡中找到“常规(适用于所有类型)”并标记组合框“在结果标题中使用列标签而不是列名称” ”。
看截图:http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622 http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622
Enjoy.
该问题是由于 JDBC 规范的混乱(至少在历史上)以及 Jaybird 对其在结果集元数据中报告为 columnNames 和 columnLabels 的内容所做的更改造成的。据我所知,在 JDBC 2.0 及更早版本中,columnName 和 columnLabel 之间的区别没有明确定义,所以在几乎所有情况下getColumnName()
返回相同的值getColumnLabel()
(即 AS 别名,如果指定)。
JDBC 3.0 做出了更明显的区别:columnName
是表中基础列的名称(如果有),columnLabel
如果指定则为 AS 别名,否则为columnName
。 Jaybird 2.1.6 及更早版本用于返回相同的值getColumnLabel()
and getColumnName()
(即columnLabel
),这在 Jaybird 2.2 中进行了更改。
显然 Squirrel 默认为不符合 JDBC 的选项columnName
, 代替columnLabel
。正如您已经发现的:有一个选项可以让它使用columnLabel
反而。您的另一个选择是使用 Jaybird 2.2.1 或更高版本并添加连接属性columnLabelForName=true
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)