我正在针对.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文件有什么区别?
答案 0 :(得分:0)
.gdb
和.ib
是juast文件扩展名。它们不会影响任何事情。
我猜这里的问题是区分大小写。根据SQL标准的“分隔标识符”功能,如果在创建表时使用双引号,即:
CREATE TABLE "Users" (
"UserId" INTEGER NOT NULL PRIMARY KEY,
/* ... */
...然后标识符区分大小写。完成此操作后,您必须始终使用(1)分隔符(双引号)和(2)正确的情况,只要您使用表格任何。
烦人,是的,但SQL标准要求它。 SQL Dialect 3对于实施SQL标准要严格得多,包括分隔标识符。
要解决此问题,请在创建表时不要使用双引号,除非您确实需要此“功能”。