Firebird 字段名称转义

Firebird field name escaping

此查询有效:

SELECT r.ID FROM SomeTable r

但是下一个给我Token unknown - "ID"错误:

SELECT r."ID" FROM SomeTable r

这是为什么,在 Firebird 中正确转义字段名称的方法是什么?

我在firebird2.5上查过这个问题,没有重复。
它只在旧 Firebird1.5 服务器上发现。
因此,正确的解决方案是将服务器升级到 2.5,错误数量更少:)

您正在使用方言 1 数据库(或者您已使用方言 1 作为连接方言进行连接)。 Dialect 1 不支持带引号的标识符,它在 Firebird 存在之前就已被弃用(当时它在 1999/2000 仍是 Interbase 6 beta)。

在方言 1 中,双引号用于字符串 (char/varchar),因此解析器不会将 "ID" 视为对象名称,而是将其视为字符串,因此它会抛出一个 令牌未知错误,因为它需要一个对象名称。

如果这是一个新数据库,则使用方言 3 数据库重新启动。如果这是一个现有的数据库,那么你真的应该考虑将它迁移到方言 3。请参阅 Interbase 6 入门手册中的 "Migrating databases to dialect 3"(可从 http://www.firebirdsql.org/en/reference-manuals/ 获得,它位于链接末尾的完整集中页面)。