Firebird字段名称转义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebird字段名称转义相关的知识,希望对你有一定的参考价值。

此查询有效:

SELECT r.ID FROM SomeTable r

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

SELECT r."ID" FROM SomeTable r

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

答案

您正在使用方言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/获取,它位于页面末尾链接的完整集中) )。

另一答案

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

以上是关于Firebird字段名称转义的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 dbExpress 从 Firebird 获取表描述(字段和类型)

Oracle SQL - 字段名称中的转义与符号[重复]

Firebird - PGSQL 中的串行字段? [复制]

多层下firebird自增长字段的处理

想更改一个Firebird数据表里面的字段长度,但是更改不了

在 Firebird 数据库中创建自动增量字段的最简单方法