使用CASE的Interbase SQL SELECT查询

时间:2009-11-16 14:55:42

标签: select case interbase

我正在针对.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文件有什么区别?

1 个答案:

答案 0 :(得分:0)

.gdb.ib是juast文件扩展名。它们不会影响任何事情。

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

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

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

烦人,是的,但SQL标准要求它。 SQL Dialect 3对于实施SQL标准要严格得多,包括分隔标识符。

要解决此问题,请在创建表时不要使用双引号,除非您确实需要此“功能”。