【发布时间】:2012-01-10 18:43:41
【问题描述】:
问题
我正在尝试动态构建一些需要使用列/表分隔符的 SQL 语句,以便我们可以使用两个单词或特殊保留关键字等的表名。(我不知道,因为表它映射到,将是客户端上的现有数据)
当我只支持 Access 2007 和 SQL Server 时,我使用方括号 [ ]:
select [Unit Price] from [Products] where [Unit Price] < @UnitPriceLimit
但是现在我也要支持Oracle,Oracle不允许我使用方括号。
我发现 Oracle 确实允许我使用双引号:
select "Unit Price" from "Products" where "Unit Price" < @UnitPriceLimit
SQL Server 也支持此功能,但默认情况下不支持,仅当您翻转某个选项时,引用标识符; Access 2007 中根本不支持双引号(据我所知,也许我错过了一个选项?)。
问题
有谁知道我可以跨平台使用的标识符吗?
或者至少对所有 3 个相关平台都通用? (Oracle、Access 2007+、SQL Server 2008+)
【问题讨论】:
-
我知道答案是否定的,抱歉。
-
补充一下 Marco 所说的:据我所知,双引号是 ANSI 引用标识符的标准。因此,如果您不能在 MS Access 中使用它们,它们可能不是跨平台标准。您是否考虑过使用下划线字符作为单词分隔符?
-
Nope MySQl 例如默认使用反引号。如果您无法控制 db 对象名称,则检测和配置是您唯一的选择。
-
不幸的是,我无法控制客户为他们的表使用的内容,我正在映射到预先存在的数据、预先存在的表,它可以被命名为任何东西。
标签: sql database oracle sql-server-2008 ms-access-2007