La norme ANSI SQL Server Express est-elle conforme?

Pouvez-vous exécuter des instructions SQL ANSI dans SQL Server Express 2005 ou 2008?

SQL Server comprend Ansi Sql. Cependant, il existe toujours des interprétations différentes des normes. Voici un article que j'ai trouvé qui énumère certaines des différences: Pensez norme ANSI SQL est entièrement portable entre les bases de données? Réfléchis encore.

Si vous n'utilisez que des backends SQL Server pour votre produit, oubliez le SQL ANSII, T-SQL dispose de moyens beaucoup plus efficaces pour interroger une database SQL Server. ANSII est correct si vous devez avoir plusieurs backends, mais si ce n'est pas le cas, il est stupide de vous limiter au code le less efficace disponible. Cela est vrai pour tout backend de database, le langage propriétaire pour cette database est conçu pour fonctionner mieux que toute autre chose.

Mais en réponse à votre question, oui, certaines normes ANSII fonctionnent et d'autres pas. Pour toutes les questions de base, vous pouvez être d'accord, ce sont les choses complexes qui tendent vraiment à souligner les différences. Donc, fondamentalement, vous ne pouvez pas tout tester. Ce que vous devriez faire de toute façon.

Il n'est que partiellement conforme à ANSI. La plus grande différence est l'opérateur de concaténation de string qui devrait être || mais est + dans SQL Server.

En outre, en fonction du classment de la database actuelle, il se peut qu'il ne soit pas conforme aux règles de sensibilité à la casse requirejses par la norme.

Autres (je pense nécessaire) fonctionnalités ANSI qui manquent:

  • pas de littéraux date / heure ANSI ( DATE '2012-08-28' , TIMESTAMP '2012-08-28 17:33:05' )
  • aucun type de données d'intervalle
  • Le constructor de lignes VALUES (en dehors de la clause INSERT )
  • Aucune comparaison de tuple (col1, col2) = (1,2)
  • NULLS FIRST/LAST option pour ORDER BY

La plupart des fonctionnalités manquantes ont cependant un équivalent non-standard en T-SQL.

La norme SQL est une bonne chose et si j'ai le choix entre deux constructions SQL, je choisis la norme par rapport à la version non standard.

Mais écrire des applications indépendantes des SGBD ne fonctionnera tout simplement pas (du less), du less pas pour des applications non sortingviales.

S'il est vraiment indépendant du SGBD, cela signifie simplement qu'il sera tout aussi lent sur tous les SGBD.

Vous avez payé beaucoup d'argent pour toutes les fonctionnalités de SQL Server (ou pas tellement pour SQL Server Express) alors allez les utiliser.