私はDB2を初めて使用し、unixODBCとLinux用のIBM i Access ODBCドライバーを使用して、DB2 for i(V7R1)データベースに接続しています。
データベースにクエリを実行すると、結果には列名の最初の文字のみが含まれます。たとえば、isql
ユーティリティを使用して実行される一般的なクエリでは、次のような結果が得られます。
SQL> SELECT column1, column2 FROM schema.table WHERE column1 = 12345
+--------+---------------------------------+
| C | C |
+--------+---------------------------------+
| 12345 | Lorem ipsum dolar sit |
+--------+---------------------------------+
SQLRowCount returns -1
1 rows fetched
これは私にとって問題です。アプリケーションでデータベースにクエリを実行しようとすると(たとえば、Pythonのpyodbc
ライブラリを使用して)、列名で結果にアクセスできないためです。結果セットでは、両方の列に「C」という名前が付けられています。
私の質問は次のとおりです。
編集:
これは、列にエイリアスを付けようとしても発生します。
SQL> SELECT column1 as foo, column2 as bar FROM schema.table WHERE column1 = 12345
+--------+---------------------------------+
| F | B |
+--------+---------------------------------+
| 12345 | Lorem ipsum dolar sit |
+--------+---------------------------------+
SQLRowCount returns -1
1 rows fetched
列名の最初の文字のみが返されるという欠陥は、IBM APARSE63700で説明されています。
http://www-912.ibm.com/n_dir/nas4apar.NSF/b6c9b771e38b5ea2862564c00079d110/0f43bb0435716de586257f340041ed7a?OpenDocument
この修正は、2016年7月中旬に予定されているLinux用のIBM Access Client Solutions ApplicationPackageの新しいバージョンに統合する必要があります。
これは、私が使用していたIBMのドライバーの特定のバージョンのバグだと思います。私はIBMi Access Client Solutions Linux APv07.03.00のODBCドライバーを使用していました。
そのドライバーをIBMi Access for Linuxv7.1.0-1.0のODBCドライバーに置き換えたところ、すべてが期待どおりに機能するようになりました。