Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment définir la langue actuelle dans SQL Server (T-SQL)

Dans SQL Server, vous pouvez définir la langue à utiliser pour la session en cours. Le paramètre de langue actuel détermine la langue utilisée sur tous les messages système, ainsi que les formats de date/heure à utiliser.

Cet article explique comment utiliser T-SQL pour définir l'environnement linguistique actuel dans SQL Server.

Syntaxe

La syntaxe pour définir la langue actuelle ressemble à ceci :

SET LANGUAGE { [ N ] 'language' | @language_var }

[N]'language' | @language_var est le nom de la langue tel qu'il est stocké dans sys.syslanguages vue de compatibilité du système. Cet argument peut être Unicode ou DBCS converti en Unicode.

Pour spécifier une langue en Unicode, utilisez N 'Langue'. Si spécifié en tant que variable, la variable doit être de sysname type de données (le sysname le type de données est utilisé pour les colonnes de table, les variables et les paramètres de procédure stockée qui stockent les noms d'objet).

Exemple 1 - Réglage de la langue

Voici un exemple de définition de la langue de la session en cours sur le britannique :

SET LANGUAGE British;

Résultat :

Changed language setting to British.

Voici un exemple de définition de la langue de la session en cours sur l'allemand :

SET LANGUAGE German;

Résultat :

Die Spracheneinstellung wurde in Deutsch geändert.

Nous pouvons donc voir que la sortie est déjà dans la nouvelle langue spécifiée.

Exemple 2 – Exécution d'une requête

Changer la langue a un impact sur la façon dont les dates sont formatées. Voici un exemple pour montrer ce que je veux dire.

Tout d'abord, nous changeons la langue en British , puis exécutez une requête pour convertir une chaîne en une date type de données :

SET LANGUAGE British;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Résultat :

+------------+
| Convert    |
|------------|
| 2030-01-09 |
+------------+
Changed language setting to British.

Dans ce cas, la date est traduite comme étant le 9 janvier.

Ensuite, nous changeons la langue en us_English et lancez la même requête :

SET LANGUAGE us_english;
SELECT CONVERT(date, '09/01/2030') AS 'Convert';

Résultat :

+------------+
| Convert    |
|------------|
| 2030-09-01 |
+------------+
Changed language setting to us_english.

Donc, dans ce cas, la date a été traduite comme étant le 1er septembre, en raison des nouveaux paramètres de langue.

Définition de la langue au niveau de la requête

Certaines fonctions T-SQL vous permettent de spécifier une langue/culture à utiliser au niveau de la requête. Par exemple, PARSE() accepte un argument facultatif utilisé pour déterminer le formatage de la chaîne fournie. Cela vous permet de définir la langue/la culture à utiliser uniquement dans cette requête (et même dans différentes parties de la requête) sans avoir à modifier les paramètres de langue pour la session en cours.

Voici un exemple pour illustrer ce que je veux dire :

SELECT 
    PARSE('01/06/2018' AS date USING 'en-US') AS 'en-US',
    PARSE('01/06/2018' AS date USING 'en-GB') AS 'en-GB';

Résultat :

+------------+------------+
| en-US      | en-GB      |
|------------+------------|
| 2018-01-06 | 2018-06-01 |
+------------+------------+

Si vous ne fournissez pas cet argument, la langue de la session en cours est utilisée.

Rechercher la langue actuelle

Vous pouvez exécuter l'instruction suivante pour renvoyer la langue actuellement utilisée :

SELECT @@LANGUAGE;

Pour plus d'options, consultez 3 façons d'obtenir la langue de la session en cours dans SQL Server (T-SQL).

Rechercher les langues disponibles

Vous pouvez exécuter le code suivant pour renvoyer une liste des langues disponibles :

EXEC sp_helplanguage;

Cela renvoie une liste de toutes les langues.

Pour le limiter à une langue particulière, ajoutez le nom de la langue. Comme ceci :

EXEC sp_helplanguage Spanish;