【发布时间】:2014-11-13 17:17:09
【问题描述】:
有没有办法在你的应用程序中处理保留的表和列名,它可以在各种数据库中工作,如 Oracle、MySQL、SQL Server、PostGreSQL 等。
目前,我必须执行以下操作:
Oracle - 使用双引号。 MySQL - 使用反引号或双引号(取决于是否启用 ANSI_QUOTES 模式) SQL Server - 使用括号 PostGreSQL - 使用双引号。
我知道 ANSI 标准规定使用双引号,但不幸的是,并非所有 dbms 似乎都支持它们。
【问题讨论】:
-
很遗憾没有。您可以编写一个小脚本来解析 SQL 并将引用字符替换为所需的字符,但 RDBMS 之间在这方面没有一致性。
-
谢谢。但是,DataBaseMetaData.getIdentifierQuoteString() 中有一个 API,它倾向于给出适当的引用。我在 MySQL 上试过这个并返回一个反引号。其他数据库供应商可以依赖此 API 吗? (任何建议0
-
SQL Server 不也支持双引号吗?
-
所以我已经测试过了,SQL Server 使用双引号,就像 ANSI 指定的一样。那你的问题解决了吗?
-
看来我们必须设置 SET QUOTED_IDENTIFIER ON 才能在 SQL Server 中启用双引号。但是,我相信有配置要求应该没问题。所以,我可以继续使用双引号。非常感谢大家..
标签: mysql sql sql-server oracle postgresql