28

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

楽しみ。

4

2 に答える 2

21

この問題は、JDBC 仕様の混乱 (少なくとも歴史的に) と、Jaybird が結果セット メタデータの columnNames および columnLabels として報告する内容に関する変更によるものです。私の知る限り、JDBC 2.0 以前では、columnName と columnLabel の区別が明確に定義されていなかったため、ほとんどの場合getColumnName()、同じ値getColumnLabel()(指定されている場合は AS エイリアス) が返されました。

JDBC 3.0 では、より明確な区別が行われcolumnNameましcolumnLabelcolumnName。Jaybird 2.1.6 以前では、getColumnLabel()and getColumnName()(つまりcolumnLabel) に対して同じ値を返していましたが、これは Jaybird 2.2 で変更されました。

columnNameどうやら Squirrel のデフォルトは、 の代わりにの非 JDBC 準拠オプションですcolumnLabel。すでにわかっているように、代わりに を使用するオプションがありますcolumnLabel。もう 1 つのオプションは、Jaybird 2.2.1 以降を使用して接続プロパティを追加することですcolumnLabelForName=true

于 2012-10-04T09:27:43.447 に答える
12

Squirrel では、次のように設定する必要があります。

[ファイル] > [グローバル設定] > [データ型の制御] > [チェック]:結果ヘッダーで列名の代わりに列ラベルを使用する

于 2016-03-02T19:50:04.330 に答える