SQL标准是否允许函数名和括号之间的空格

时间:2010-03-23 16:25:25

标签: sql standards standards-compliance

检查几个RDBMS我发现像

这样的东西
SELECT COUNT (a), SUM (b)  
FROM TABLE
允许

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

任何人都可以提供指向SQL标准的指针(如果定义了这个)(任何版本都会这样做)?

编辑: 以上工作在postgres中,mysql需要set sql_mode = "IGNORE_SPACE";定义为here(有关受此服务器模式影响的完整功能列表,请参阅this ref)。 据报道MS SQL接受上述内容。

此外,似乎答案最有可能出现在standard中。关于常规符号和术语,我可以遵循BNF,但是当我在select的那一部分中定义空格和分隔符时,我会迷失方向。

3 个答案:

答案 0 :(得分:1)

是;令牌之间的空白基本上被忽略了。唯一的例外是正式的,相邻的字符串文字串联 - 但标准比任何实现都要怪。

请参阅:http://savage.net.au/SQL/

答案 1 :(得分:0)

这适用于SQL Server 2005:

SELECT COUNT   (*)
  FROM TABLE

...当MySQL上COUNT(*)之间的一个空格导致MySQL 1064错误(语法错误)时。我没有Oracle或Postgres方便测试。

无论标准是什么,它都取决于您使用的供应商和版本中的实现。

答案 2 :(得分:-1)

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

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