sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ställer in det aktuella språket i SQL Server (T-SQL)

I SQL Server kan du ställa in vilket språk som ska användas för den aktuella sessionen. Den aktuella språkinställningen bestämmer vilket språk som används i alla systemmeddelanden, såväl som datum-/tidsformat som ska användas.

Den här artikeln visar hur du använder T-SQL för att ställa in den aktuella språkmiljön i SQL Server.

Syntax

Syntaxen för att ställa in det aktuella språket ser ut så här:

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

Där [N]'language' | @language_var är namnet på språket som lagras i sys.syslanguages systemkompatibilitetsvy. Detta argument kan antingen vara Unicode eller DBCS konverterat till Unicode.

För att ange ett språk i Unicode, använd N 'språk'. Om den anges som en variabel måste variabeln vara av sysname datatyp (sysname datatyp används för tabellkolumner, variabler och lagrade procedurparametrar som lagrar objektnamn).

Exempel 1 – Ställa in språket

Här är ett exempel på hur du ställer in språket för den aktuella sessionen till brittiska:

SET LANGUAGE British;

Resultat:

Changed language setting to British.

Här är ett exempel på hur du ställer in språket för den aktuella sessionen till tyska:

SET LANGUAGE German;

Resultat:

Die Spracheneinstellung wurde in Deutsch geändert.

Så vi kan se att utdata redan är på det nyligen angivna språket.

Exempel 2 – Köra en fråga

Att ändra språket påverkar hur datum formateras. Här är ett exempel för att visa vad jag menar.

Först ändrar vi språket till British , kör sedan en fråga för att konvertera en sträng till ett datum datatyp:

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

Resultat:

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

I det här fallet översätts datumet till den 9 januari.

Sedan ändrar vi språket till us_English och kör samma fråga:

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

Resultat:

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

Så i det här fallet översattes datumet till den 1 september på grund av de nya språkinställningarna.

Ställa in språket på frågenivå

Vissa T-SQL-funktioner låter dig ange ett språk/kultur som ska användas på frågenivå. Till exempel PARSE() accepterar ett valfritt argument som används för att avgöra hur den angivna strängen formateras. Detta gör att du kan ställa in språket/kulturen så att den endast används inom den frågan (och till och med olika delar av frågan) utan att behöva ändra språkinställningarna för den aktuella sessionen.

Här är ett exempel för att visa vad jag menar:

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';

Resultat:

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

Om du inte anger detta argument används språket för den aktuella sessionen.

Hitta det aktuella språket

Du kan köra följande uttalande för att återställa språket som används för närvarande:

SELECT @@LANGUAGE;

För fler alternativ, se 3 sätt att få språket för den aktuella sessionen i SQL Server (T-SQL).

Hitta tillgängliga språk

Du kan köra följande kod för att returnera en lista över tillgängliga språk:

EXEC sp_helplanguage;

Detta returnerar en lista över alla språk.

För att begränsa det till ett visst språk, lägg till språknamnet. Så här:

EXEC sp_helplanguage Spanish;


  1. Hur SQLite Ifnull() fungerar

  2. Hur kontrollerar jag om ett värde är ett heltal i MySQL?

  3. Tillägget mysqli saknas, phpmyadmin fungerar inte

  4. Flera CTE i en enda fråga