0

.gdb ファイルに対して次のクエリを実行しています。

SELECT CASE USERS.USERID WHEN 1 THEN 'God' ELSE 'Somebody else' END FROM USERS;

ただし、基本的に同じクエリを .ib ファイルに対して実行すると、「Error at line 1 Dynamic SQL Error, SQL error code = -104, Token unknown - line 1, char 17」が表示されます。その部分を認識していないようCASE USERS.USERIDです。IBConsole では、.ib ファイルは SQL 方言 3 を実行していますが、.gdb ファイルは方言 1 を実行しています。これは問題ですか? .ib ファイルと .gdb ファイルの違いは何ですか?

4

1 に答える 1

0

.gdbおよび.ibはjuastファイル拡張子です。それらは何にも影響しません。

ここでの問題は大文字と小文字の区別だと思います。SQL標準の「区切り識別子」機能に従って、テーブルを作成するときに二重引用符を使用する場合、つまり次のようになります。

CREATE TABLE "Users" (
    "UserId" INTEGER NOT NULL PRIMARY KEY, 
    /* ... */

...その場合、識別子は大文字と小文字が区別されます。したがって、これを行った後は、テーブルで何かを行うときは常に(1)区切り文字(二重引用符)と(2)正しい大文字小文字を使用する必要があります。

迷惑です、はい、しかしSQL標準はそれを要求します。SQL Dialect 3は、区切られた識別子を含め、SQL標準の適用に関してはるかに厳密です。

これを回避するには、この「機能」が実際に必要な場合を除いて、テーブルを作成するときに二重引用符を使用しないでください。

于 2009-11-16T15:23:50.980 に答える