- - PR -
列名で数字を使用したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-23 16:47
再度質問させてください。
select a1 , AVG(CASE WHEN a2 = 4 THEN a3 ELSE NULL END) 4 from TMP2 GROUP BY a1 のようなSQLを作成し、クエリをとってこさせたいのですが、いかんせん、数字の列名 ところでエラーになります。ダブルコーテーションでOracleならくくれますが、 Informixだとほかにやり方はないのでしょうか。 よろしくお願いします。 |
|
投稿日時: 2004-09-24 09:58
これは、informix の名前付けの規則にある通り、
識別子には、英文字または漢字などの日本語文字で始まる、 英文字、数字、日本語文字、下線を任意の組み合わせで 使用した18バイトまでの名前を指定する。 とあります。 ですから、先頭が数字の識別子は使用できません。 なぜ、この列名は、数字なのでしょうか? 数字にこだわるのなら、全角漢字にして、"2" を使う方法があります。 全角半角変換のモジュールは用意されているので、 それを使って工夫する方法ならあると思いますが・・・・・。 |
|
投稿日時: 2004-09-24 12:28
ありがとうございます。m(__)m
プログラム上の問題なので、ひとまず列名にRという大文字を入れて後で消すということで解決しました。ところで、ふと思ったのですが、informixのSQL文の長さには 何か制限があるのでしょうか。 たとえば、 SELECT department_id, MIN(CASE WHEN department_name = 'Administration' THEN manager_id ELSE NULL END) RAdministration , MIN(CASE WHEN department_name = 'Construction' THEN manager_id ELSE NULL END) RConstruction , MIN(CASE WHEN department_name = 'Contracting' THEN manager_id ELSE NULL END) RContracting , MIN(CASE WHEN department_name = 'Government Sales' THEN manager_id ELSE NULL END) RGovernment Sales , MIN(CASE WHEN department_name = 'IT Helpdesk' THEN manager_id ELSE NULL END) RIT Helpdesk , MIN(CASE WHEN department_name = 'IT Support' THEN manager_id ELSE NULL END) RIT Support , MIN(CASE WHEN department_name = 'Manufacturing' THEN manager_id ELSE NULL END) RManufacturing , MIN(CASE WHEN department_name = 'Marketing' THEN manager_id ELSE NULL END) RMarketing , MIN(CASE WHEN department_name = 'NOC' THEN manager_id ELSE NULL END) RNOC , MIN(CASE WHEN department_name = 'Operations' THEN manager_id ELSE NULL END) ROperations , MIN(CASE WHEN department_name = 'Payroll' THEN manager_id ELSE NULL END) RPayroll FROM TMP1 GROUP BY department_id というような長い文をODBC関数のSQLEXECDIRECTで検索させるとエラーが帰ってきます。 ところが、上記のMinで作った列を3つくらいまでにするとクエリが帰ってきます。 ちなみにDBACCESSではバッファが長くて使えませんというエラーが帰ってくるのですが、やはりプログラム上でもSQLを実行する際にSQLの長さというのは気にしなければいけないんでしょうか。 #Informixがわからなさすぎて、いつのまにかベテランになっていたのでこのままのスレ使用w |
1