Firebird字段名称转义

时间:2015-03-30 10:41:17

标签: escaping firebird

此查询有效:

SELECT r.ID FROM SomeTable r

但接下来给了我Token unknown - "ID"错误:

SELECT r."ID" FROM SomeTable r

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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