sql - 带关键字别名的 Firebird 查询

标签 sql firebird

在我们的应用程序中,我们使用返回两列的查询动态填充下拉列表: 文本和值。

我们现在正在移植此功能以处理 Firebird 数据库中的数据。 使用 IBExpert 测试这些查询,我发现无法返回名为“Value”的列 - 可能是因为它是一个关键字。

我尝试使用 [Value] 转义 Value,就像在 MSSQL 中一样,以及“Value”或“Value”。查询将不会运行。 我还尝试创建一个以 Value 作为列的 View ,但它不会创建 View 。

我们可以更改代码以使用不同的列名称,但这意味着我们必须更改大量查询。

查询:

SELECT BEZ AS Text, Data2 AS Value FROM SKO120 WHERE Data2 like 'V%'

最佳答案

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

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

关于sql - 带关键字别名的 Firebird 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569005/

相关文章:

mysql - 如何仅将 MySQL 权限授予特定行

sql - 你能做一个 ELSE WHEN 吗?

c# - 如何使用 c# 在 firebird 中执行事务(或多个 sql 查询)

boolean - 为什么我们在 Firebird 中没有 boolean 数据类型?

使用JOIN时不使用Firebird索引,为什么?

replication - 您对用于 Firebird RDBMS 的复制和故障转移的 DRBD/Heartbeat 有何看法?

sql - 使用 dbName VS dbName.TableName 之间的区别?

c# - 就性能而言,C# 的 ToUpper 或 SQL 中的 Upper 函数哪个更好

java - 如何更新与同一表的其他记录匹配的表字段

delphi - Firebird 和 Delphi 2009 出现错误消息 "Incorrect values within SQLDA structure"