4

いくつかのRDBMSをチェックすると、次のようなことがわかります

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

許可されます (集約関数と括弧の間のスペースに注意してください)。

これが定義されているSQL標準自体へのポインタを誰かが提供できますか(どのバージョンでも可能です)?

編集: 上記は postgresで機能します。mysql はここでset sql_mode = "IGNORE_SPACE";定義されている必要があります(このサーバー モードで影響を受ける関数の完全なリストについては、このリファレンスを参照してください)。MS SQL は上記を受け入れると報告されています。

また、答えは標準にある可能性が最も高いようです。通常の記号と用語に関してはBNFに従うことができますが、select のその部分の空白とセパレーターの定義に関しては迷います。

4

3 に答える 3

1

はい; トークン間の空白は実質的に無視されます。唯一の例外は、公式には、隣接する文字列リテラルの連結です - しかし、標準はどの実装よりも奇妙です。

参照: http://savage.net.au/SQL/

于 2010-03-23T16:42:19.423 に答える
0

これは SQL Server 2005 で機能します。

SELECT COUNT   (*)
  FROM TABLE

...一方、MySQL と MySQL の間のスペースが 1 つあるCOUNT(*)、MySQL 1064 エラー (構文エラー) が発生します。テストに便利な Oracle または Postgres がありません。

標準が何であれ、使用しているベンダーとバージョンの実装に依存します。

于 2010-03-23T17:19:15.247 に答える
-1

ポインターを提供することはできませんが、そのような空白は無視されると思います。

私はそれが T-SQL にあることを知っており、MySQL の実装について約 80% 確信しています。

于 2010-03-23T16:33:02.673 に答える