Citation:
Je l'ai surtout apprise sur ce forum et notamment grâce à vos papiers et vos interventions très (très très) rigides sur ce point.
Certes je suis rigide, mais il y a une raison essentielle. La plupart des internautes et développeurs pensent avoir appris SQL, alors qu'ils ont appris du MySQL, du Oracle ou du Transact et l'on voir les dégâts que cela cause à tous les niveaux... C'est pourquoi j'ai pris partit de défendre SQL (le langage et donc la norme), car avant tout la norme est faites par les professionnels et se trouve en moyenne plus intelligente que n'importe quel éditeur pris séparément. D'ailleurs le rapporteur de la norme SQL, n'est-il pas Jim Melton, principal conseillé technique pour Oracle ?
Citation:
Pour le format de date je parlais bien de spécifier le format de l'affichage.
Pour l'affichage ce n'est pas du ressort d'un SGBDR, mais d'un outil client.
Citation:
Si un fournisseur m'envoie un fichier à intégrer dans le SI, avec des dates par exemple "AAAAMM/JJ", je dois aller regarder dans les tables de convert pour trouver ce qui convient le mieux.
Chez Oracle c'est plus simple avec to_date(<champ>, 'yyyymm/dd').
La récupération de données est du domaine des outil d'ETL et non du SGBDR. Mais sachez cependant que c'est encore plus simple encore sous MS SQL Server, car vous n'avez pas de requête a récrire pour charger les données en fonction du format, ceci étant un paramètre de la session client :
SET FORMAT XXX;
avec XXX pouvant valoir : YMD, YDM, MDY, MYD, DMY, DYM.
Modifiable à tout moment.
Citation:
Pour les expressions régulières la syntaxe Oracle ne suit pas la norme, mais les fonctions sont bien built-in (après je ne sais pas où elles sont exécutées).
Built-in ou pas ne change rien en terme de fonctionalité. Vous retrouvez la même sous SQL Server via CLR par exemple avec RegexMatches. http://msdn.microsoft.com/fr-fr/magazine/cc163473.aspx
Citation:
Côté analytiques je pensais surtout aux fonctions en elles-même qui existe chez Oracle et pas encore chez Microsoft pour des raisons de normalisations : "ntile", "lead", "lag", "first_value", "last_value"
ntile existe sous MS, mais les autres sont trop récentes (norme SQL:2008) pour y avoir été déjà implantées.
Citation:
du côté de fonctions plus anciennes comme "sum", "min", "max", "avg" ne permettent pas d'insérer de tri dans la fonction de fenêtrage et donc pas de somme cumulative,
Ce qui fonctionne aussi chez SQL Server, mais sans la fenêtre RANGE/ROWS. Effectivement c'est une différence que de ne pas pouvoir faire une somme cumulative, mais cela s'écrit très facilement via une CTE qu'Oracle a eu beaucoup de mal à introduire.
Citation:
...les partitioned outer joins ... la clause model ...
Tout cela est du domaine de l'analytique et s'éloigne fortement du simple transactionnel. Dans ce cas plutôt que de complexifier le SQL de base fait pour des bases OLTP, il suffit d'utiliser un langage qui est un standard de fait comme MDX (Multi Dimensionnal Expression) qui est fait pour cela. Notons qu'a part Oracle qui joue cavalier seul sur ce sujet, presque tous les grand du décisionnel ont adhéré à MDX : SAS, SAP, Proclarity, Cognos, Business Objects...
Citation:
Pour finir une syntaxe qu'Oracle a récupéré chez SQL Server : PIVOT / UNPIVOT, qui ne sont pas dans la norme non plus (j'ai lu ça dans un de vos posts, et je vois d'ici vos cheveux se hérisser sur votre tête car vous n'aimez pas)
Je n'aime pas car c'est une clause cosmétique. Elle n'apporte rien du tout si ce n'est de repositionner les données. Aucune valeur ajoutée, juste de la peinture...
A +