Question

Vérification quelques SGBDR Je trouve que des choses comme

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

sont autorisés (espace d'affichage entre des fonctions d'agrégation et les parenthèses).

Quelqu'un pourrait-il fournir un pointeur vers SQL standard lui-même lorsque cela est défini (toute version fera)?

EDIT: Les travaux ci-dessus dans Postgres, MySQL a besoin set sql_mode = "IGNORE_SPACE"; tel que défini (pour la liste complète des fonctions qui sont influencés par ce mode serveur voir dans cette ref ). MS SQL est signalé à accepter ce qui précède.

Aussi, il semble que la réponse est très probablement dans la section norme. Je peux suivre BNF sur les symboles et les termes réguliers, mais je se perdre quand il vient à la définition des espaces et des séparateurs dans cette partie de la sélection.

Était-ce utile?

La solution

Oui; l'espace blanc entre les jetons est pratiquement ignorée. La seule exception est, officiellement, avec concaténation de chaîne littérale adjacente -. Mais la norme est plus étrange que toute mise en œuvre serait

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

Autres conseils

Cela fonctionne dans SQL Server 2005:

SELECT COUNT   (*)
  FROM TABLE

... tandis qu'un espace entre COUNT et (*) sur MySQL provoque une erreur MySQL 1064 (erreur de syntaxe). Je n'ai pas à portée de main pour tester Oracle ou Postgres.

Quelle que soit la norme soit, il est dépendant de la mise en œuvre du fournisseur et la version que vous utilisez.

Je ne peux pas fournir un pointeur, mais je crois que l'espace blanc comme ça est ignoré.

Je sais qu'il est en T-SQL, et environ 80% certain de la mise en œuvre de MySQL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top