在我们的应用程序中,我们使用返回两列的查询动态填充下拉列表: 文本和值。
我们现在正在移植此功能以处理 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/