Firebird - 选择名为start的字段

时间:2014-06-05 12:31:36

标签: sql firebird

我遇到了一个奇怪的问题。客户在FirebirdSQL start中命名了一个字段。现在我无法选择这个字段:

select t.start from table t

给我错误:Invalid token

有关如何选择此字段的任何想法吗?

1 个答案:

答案 0 :(得分:0)

单词 start 是Firebird中的保留字,因此需要引用。 Firebird中的引号是双引号。所以你需要使用:

select t."start" from "table" t

请注意,我也引用了 table ,因为它也是一个保留字。引用会使名称区分大小写,因此您可能需要使用"START""TABLE"

在您的评论中,您提到引用会产生一个恒定值'table'。这意味着您正在使用方言1,Firebird的已弃用(和传统)方言。这种遗留方言不能引用对象名称,双引号用于字符串文字(在SQL标准单引号旁边)。您的数据库是方言1数据库,或者您在连接库中指定了错误的连接方言。

如果您的数据库实际上是方言3,解决此问题就像指定连接方言3(或0到基于数据库方言的自动选择)一样简单。但是,如果您的数据库是方言1数据库,则需要迁移到方言3以便能够解决此问题。

如果这只是为了尝试:确保你创建一个方言3数据库(对于大多数工具,这是默认的)。

如何确定数据库方言

要确定数据库方言,您可以使用gstat tool

gstat mydatabase.fdb -header

在最近的Firebird版本中,您还可以查询MON$DATABASE监控表。大多数查询工具还允许您查看数据库属性。

如何从方言1迁移到方言3

我认为这里写得太复杂了(而且我自己从未这样做过,因为多年前它被认为已被弃用)。但是,Interbase 6.0入门指南(可从Firebird: Reference Manuals获得(在页面末尾)描述了迁移的基本过程,我确信通过一些Google搜索可以找到页面。