0

我正在对 .gdb 文件运行以下查询:

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

但是,对 .ib 文件运行基本相同的查询时,我得到“第 1 行动态 SQL 错误,SQL 错误代码 = -104,令牌未知 - 第 1 行,字符 17”。似乎它不识别该部分CASE USERS.USERID。在 IBConsole 中,.ib 文件运行 SQL 方言 3,而 .gdb 文件运行方言 1。这有关系吗?.ib 文件和 .gdb 文件有什么区别?

4

1 回答 1

0

.gdb并且.ib只是文件扩展名。它们不会影响任何东西。

我猜这里的问题是区分大小写。根据 SQL 标准的“分隔标识符”特性,如果在创建表时使用双引号,即:

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

...然后标识符区分大小写。完成此操作后,您必须始终使用 (1) 分隔符(双引号)和 (2)对表格进行任何操作时使用正确的大小写。

烦人,是的,但 SQL 标准需要它。SQL Dialect 3 在执行 SQL 标准方面更加严格,包括分隔标识符。

为了解决这个问题,除非您真的想要这个“功能”,否则在创建表格时不要使用双引号。

于 2009-11-16T15:23:50.980 回答