标题基本上是这样说的:是否有任何不处理列名引用/转义的主要数据库?
例如,假设我想要一个名为的列FROM(假设我有一个非常好的理由)。在每个基于 SQL 的 RDBMS 中,这自然是一个关键字。在 MS SQL Server 中,我可以使用[和转义它]:
CREATE TABLE FOO (
[FROM] VARCHAR(255)
)
Run Code Online (Sandbox Code Playgroud)
MySQL 使用反引号
CREATE TABLE FOO (
`FROM` VARCHAR(255)
)
Run Code Online (Sandbox Code Playgroud)
同样,Oracle 和 Postegres 使用双引号。
是否有任何主要的 RDBMS不支持引用/转义列名,以一种或另一种方式?
正如Leigh Riffel所说,我的问题的答案部分取决于您所说的“主要”是什么意思。
我的意思是:不,没有主要的 RDBMS 引擎无法处理名称转义/引用。引用/转义的名称显然正确地称为分隔标识符。
Martin Smith指出,delimited identifier在SQL-92 规范中:
<delimited identifier> ::=
<double quote> <delimited identifier body> <double quote>Run Code Online (Sandbox Code Playgroud)
现在,规范的遵循程度差异很大,但是......
我已经验证了以下引擎:
"name"至少可以追溯到 SQL Server 2000(以及它自己的非标准[name])`name`默认使用反引号 ( ),但如果你设置SET GLOBAL SQL_MODE=ANSI_QUOTES;它支持标准[name]我认为前四个覆盖了绝大多数安装,第五个对于嵌入式数据库工作很重要(如下列表中的几个)。
a_horse_with_no_name告诉我们所有这些也支持它:
(这是一个 Stack Exchange 站点,如果您知道其他人也支持这一点,如果您有足够的代表,请随时编辑答案并直接添加它们。如果没有,请发表评论,我会将它们折叠起来。 )