Rédiger des instructions Transact-SQL internationalesWrite International Transact-SQL Statements

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database ouiAzure SQL Data Warehouse ouiParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Les directives suivantes facilitent la transition d'une langue à l'autre des bases de données et applications de bases de données qui utilisent des instructions Transact-SQLTransact-SQL , ou leur permettent de prendre en charge directement plusieurs langues :Databases and database applications that use Transact-SQLTransact-SQL statements will become more portable from one language to another, or will support multiple languages, if the following guidelines are followed:

  • À partir de SQL Server 2019 - PreviewSQL Server 2019 preview, utilisez :Starting with SQL Server 2019 - PreviewSQL Server 2019 preview, use either:

    • Les types de données char, varchar, et varchar (max) avec un classement UTF-8 activé.The char, varchar, and varchar(max) data types with a UTF-8 enabled collation.
    • Ou les types de données nchar, nvarchar, et nvarchar (max) avec tout type de classement.The nchar, nvarchar, and nvarchar(max) data types with any collation.

    Cela évite les problèmes de conversion de la page de codes.This avoids code page conversion issues. Pour plus d’informations, consultez Prise en charge d’Unicode et du classement.For more information, see Collation and Unicode Support.

  • À partir de SQL Server 2017 (14.x)SQL Server 2017 (14.x), remplacez toutes les utilisations des types de données char, varchar et text par nchar, nvarchar et nvarchar(max) .Up to SQL Server 2017 (14.x)SQL Server 2017 (14.x), replace all uses of the char, varchar, and varchar(max) data types with nchar, nvarchar, and nvarchar(max). Cela évite les problèmes de conversion de la page de codes.This avoids code page conversion issues. Pour plus d’informations, consultez Prise en charge d’Unicode et du classement.For more information, see Collation and Unicode Support.

    Important

    Le type de données texte est déconseillé et ne doit pas être utilisé dans les nouveaux travaux de développement.The text data type is deprecated and should not be used in new development work. Envisagez de convertir les données texte en données varchar (max) .Plan to convert text data to varchar(max).

  • Lors des comparaisons et opérations sur les mois et jours de la semaine, utilisez la partie numérique de la date plutôt que les chaînes de noms.When doing month and day-of-week comparisons and operations, use the numeric date parts instead of the name strings. Selon les paramètres de langue, des noms de mois et de jours de la semaine différents sont retournés.Different language settings return different names for the months and weekdays. Par exemple, DATENAME(MONTH,GETDATE()) retourne May quand la langue est définie sur Anglais (États-Unis), Mai pour l’allemand et mai pour le français.For example, DATENAME(MONTH,GETDATE()) returns May when the language is set to U.S. English, returns Mai when the language is set to German, and returns mai when the language is set to French. Utilisez à la place une fonction comme DATEPART qui utilise le numéro du mois plutôt que son nom.Instead, use a function such as DATEPART that uses the number of the month instead of the name. Utilisez les noms DATEPART lorsque vous générez des ensembles de résultats qui seront affichés par un utilisateur, car les noms de date sont souvent plus clairs qu'une représentation numérique.Use the DATEPART names when you build result sets to be displayed to a user, because the date names are frequently more meaningful than a numeric representation. Pour autant, ne codez aucun élément logique dépendant des noms affichés d’une langue spécifique.However, don't code any logic that depends on the displayed names being from a specific language.

  • Pour spécifier des dates dans des comparaisons ou comme entrées d'instructions INSERT ou UPDATE, utilisez des constantes qui sont interprétées de la même manière, quelle que soit la langue définie :When you specify dates in comparisons or for input to INSERT or UPDATE statements, use constants that are interpreted the same way for all language settings:

    • Les applications ADO, OLE DB et ODBC doivent utiliser les clauses ODBC d'échappement de temps, de date et d'horodateur :ADO, OLE DB, and ODBC applications should use the ODBC timestamp, date, and time escape clauses of:

      { ts' yyyy - mm - dd hh : mm : ss [ . fff] '} tel que : { ts'1998-09-24 10:02:20'}{ ts' yyyy - mm - dd hh : mm : ss [.fff] '} such as: { ts'1998-09-24 10:02:20'}

      { d' yyyy - mm - dd '} tel que : { d'1998-09-24'}{ d' yyyy - mm - dd '} such as: { d'1998-09-24'}

      { t' hh : mm : ss '} tel que : { t'10:02:20'}{ t' hh : mm : ss '} such as: { t'10:02:20'}

    • Les applications qui utilisent d'autres API, ou encore des scripts, des procédures stockées ou des déclencheurs Transact-SQLTransact-SQL , doivent utiliser les chaînes numériques non séparées.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers, should use the unseparated numeric strings. Par exemple, yyyymmdd comme 19980924.For example, yyyymmdd as 19980924.

    • Les applications qui utilisent d’autres API, ou encore des scripts Transact-SQLTransact-SQL, des procédures stockées ou des déclencheurs, peuvent également utiliser l’instruction CONVERT avec un paramètre de style explicite pour toutes les conversions entre les types de données time, date, smalldate, datetime, datetime2 et datetimeoffset et les types de données de chaînes de caractères.Applications that use other APIs, or Transact-SQLTransact-SQL scripts, stored procedures, and triggers should use the CONVERT statement with an explicit style parameter for all conversions between the time, date, smalldate, datetime, datetime2, and datetimeoffset data types and character string data types. Par exemple, l'instruction suivante est interprétée de la même façon, quels que soient les paramètres de connexion concernant la langue et le format de date :For example, the following statement is interpreted in the same way for all language or date format connection settings:

      SELECT *  
      FROM AdventureWorks2012.Sales.SalesOrderHeader  
      WHERE OrderDate = CONVERT(DATETIME, '20060719', 101)  
      

Voir aussiSee also

CAST et CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)
DATEPART (Transact-SQL) DATEPART (Transact-SQL)
Prise en charge d'Unicode et du classementCollation and Unicode Support