SnowConvert AI - Serveur SQL-Azure Synapse - QUOTED_IDENTIFIER¶
Applies to
SQL Server
Azure Synapse Analytics
Description¶
Cette instruction contrôle si des guillemets doubles sont utilisés pour délimiter les identificateurs (tels que les noms de table, les noms de colonne, etc.) ou les littéraux de chaîne dans le serveur SQL. Lorsque SET QUOTED_IDENTIFIER est ON, les identificateurs peuvent être délimités par des guillemets doubles et les littéraux doivent être délimités par des guillemets simples. Lorsque OFF, les guillemets doubles sont traités comme des délimiteurs de littéral de chaîne. Consultez SET QUOTED_IDENTIFIER pour obtenir plus d’informations sur cette instruction.
Syntaxe Transact-SQL¶
Comparaison des comportements¶
Comportement du serveur SQL¶
Dans le serveur SQL, le paramètre SET QUOTED_IDENTIFIER détermine comment les guillemets doubles sont interprétés :
Lorsque ON (par défaut) : Les guillemets doubles délimitent les identificateurs, permettant l’insertion de caractères spéciaux et de mots-clés réservés dans les noms d’objets
Lorsque OFF : Les guillemets doubles sont traités comme des délimiteurs de littéral de chaîne (similaire aux guillemets simples).
Comportement de Snowflake¶
Snowflake traite toujours les guillemets doubles comme des délimiteurs d’identificateur (équivalent à QUOTED_IDENTIFIER ON du serveur SQL). Il n’y a pas d’équivalent au paramètre OFF. Les différences sont les suivantes :
Sensibilité à la casse :
Les identificateurs sans guillemets sont automatiquement convertis en majuscules
Les identificateurs entre guillemets préservent la casse exacte et deviennent sensibles à la casse
Paramètre QUOTED_IDENTIFIERS_IGNORE_CASE : Contrôle la sensibilité à la casse pour les identificateurs entre guillemets
Modèles d’échantillons de sources¶
SET QUOTED_IDENTIFIER ON¶
Lorsque QUOTED_IDENTIFIER est ON dans le serveur SQL, les guillemets doubles peuvent être utilisés pour délimiter les identificateurs contenant des espaces ou des caractères spéciaux.
SQL Server¶
Snowflake¶
Exemple de la différence
Supposons que vous ayez migré une table depuis une base de données de serveur SQL avec un classement insensible à la casse (_CI) :
Serveur SQL (avec classement _CI) :¶
Dans ce cas, le classement _CI rend les deux instructions SELECT interchangeables.
Snowflake :¶
Le comportement de Snowflake est différent, car il respecte par défaut la casse de l’identificateur entre guillemets. Il serait possible d’y accéder en modifiant l’utilisation de la session.
Si vous souhaitez définir le paramètre au niveau du compte, vous pouvez utiliser la commande suivante :
Le paramètre sera alors défini pour toutes les sessions associées au compte. Pour plus d’informations, consultez la [documentation] suivante (https://docs.snowflake.com/en/sql-reference/identifiers-syntax) ;
SET QUOTED_IDENTIFIER OFF¶
Lorsque QUOTED_IDENTIFIER est OFF dans le serveur SQL, les guillemets doubles sont traités comme des délimiteurs de chaîne.
SQL Server¶
Snowflake¶
Remarques relatives à la migration¶
Revoir la casse des identificateurs : Vérifiez la cohérence de la casse lors de la migration vers Snowflake, en particulier pour les identificateurs entre guillemets
Littéraux de chaînes : Remplacez les littéraux de chaîne entre guillemets doubles par des littéraux entre guillemets simples
Utilisez QUOTED_IDENTIFIERS_IGNORE_CASE : Songez à définir ce paramètre sur
TRUEdès la début de la migration pour réduire les problèmes de sensibilité à la casseEffectuez des tests avancés : Vérifiez que toutes les références d’objets fonctionnent correctement après la migration