代码之家  ›  专栏  ›  技术社区  ›  Unreason

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

  •  4
  • Unreason  · 技术社区  · 16 年前

    检查一些RDBMS,我发现

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

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

    是否有人可以提供指向定义了SQL标准本身的指针(任何版本都可以)?

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

    而且,答案似乎最有可能出现在 standard . 我可以跟着 BNF 关于常规符号和术语,但是当涉及到选择部分的空白和分隔符的定义时,我会迷失方向。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Jonathan Leffler    16 年前

    是的;令牌之间的空白空间基本上被忽略了。唯一的例外是,官方上,使用相邻的字符串文字串联——但是这个标准比任何实现都要奇怪。

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

        2
  •  0
  •   OMG Ponies    16 年前

    这在SQL Server 2005中有效:

    SELECT COUNT   (*)
      FROM TABLE
    

    …而在 COUNT (*) 在mysql上导致mysql 1064错误(语法错误)。我没有Oracle或Postgres可供测试。

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

        3
  •  -1
  •   Stephen Wrighton    16 年前

    我不能提供指针,但我相信这样的空白是被忽略的。

    我知道它在T-SQL中,大约80%的人对MySQL的实现有把握。