4

检查几个 RDBMS 我发现像

SELECT COUNT (a), SUM (b)  
FROM TABLE

是允许的(注意聚合函数和括号之间的空格)。

任何人都可以提供一个指向 SQL 标准本身的指针(任何版本都可以)吗?

编辑:以上在 postgres 中工作,mysql 需要如此set sql_mode = "IGNORE_SPACE";定义(有关受此服务器模式影响的函数的完整列表,请参见此参考文献)。据报道 MS SQL 接受上述内容。

此外,似乎答案最有可能在标准中。关于常规符号和术语,我可以遵循BNF,但是当涉及到选择的那部分中的空白和分隔符的定义时,我会迷失方向。

4

3 回答 3

1

是的; 标记之间的空白基本上被忽略了。唯一的例外是,正式地,使用相邻的字符串文字连接 - 但标准比任何实现都更奇怪。

见:http ://savage.net.au/SQL/

于 2010-03-23T16:42:19.423 回答
0

这适用于 SQL Server 2005:

SELECT COUNT   (*)
  FROM TABLE

...while one space between COUNT and (*) on MySQL causes a MySQL 1064 error (syntax error). I don't have Oracle or Postgres handy to test.

Whatever the standard may be, it's dependent on implementation in the vendor and version you are using.

于 2010-03-23T17:19:15.247 回答
-1

我无法提供指针,但我相信这样的空白会被忽略。

我知道它在 T-SQL 中,并且大约 80% 确定 MySQL 的实现。

于 2010-03-23T16:33:02.673 回答