W SQL Server można ustawić język, który ma być używany w bieżącej sesji. Bieżące ustawienie języka określa język używany we wszystkich komunikatach systemowych, a także używane formaty daty/godziny.
W tym artykule pokazano, jak używać T-SQL do ustawiania bieżącego środowiska językowego w SQL Server.
Składnia
Składnia do ustawiania bieżącego języka wygląda następująco:
SET LANGUAGE { [ N ] 'language' | @language_var }
Gdzie [N]'language' | @language_var
to nazwa języka przechowywana w sys.syslanguages
widok zgodności systemu. Ten argument może być w formacie Unicode lub DBCS przekonwertowanym na Unicode.
Aby określić język w Unicode, użyj N 'język'. Jeśli określona jako zmienna, zmienna musi mieć sysname typ danych (nazwa systemu typ danych jest używany dla kolumn tabeli, zmiennych i parametrów procedur składowanych, które przechowują nazwy obiektów).
Przykład 1 – Ustawianie języka
Oto przykład ustawienia języka dla bieżącej sesji na brytyjski:
SET LANGUAGE British;
Wynik:
Changed language setting to British.
Oto przykład ustawienia języka dla bieżącej sesji na niemiecki:
SET LANGUAGE German;
Wynik:
Die Spracheneinstellung wurde in Deutsch geändert.
Widzimy więc, że dane wyjściowe są już w nowo określonym języku.
Przykład 2 – Uruchamianie zapytania
Zmiana języka ma wpływ na formatowanie dat. Oto przykład, który pokaże, o co mi chodzi.
Najpierw zmieniamy język na British
, a następnie uruchom zapytanie, aby przekonwertować ciąg na datę typ danych:
SET LANGUAGE British; SELECT CONVERT(date, '09/01/2030') AS 'Convert';
Wynik:
+------------+ | Convert | |------------| | 2030-01-09 | +------------+ Changed language setting to British.
W tym przypadku data jest tłumaczona jako 9 stycznia.
Następnie zmieniamy język na us_English
i uruchom to samo zapytanie:
SET LANGUAGE us_english; SELECT CONVERT(date, '09/01/2030') AS 'Convert';
Wynik:
+------------+ | Convert | |------------| | 2030-09-01 | +------------+ Changed language setting to us_english.
Tak więc w tym przypadku data została przetłumaczona jako 1 września ze względu na nowe ustawienia językowe.
Ustawianie języka na poziomie zapytania
Niektóre funkcje T-SQL pozwalają określić język/kulturę, która ma być używana na poziomie zapytania. Na przykład PARSE()
akceptuje opcjonalny argument używany do określenia sposobu formatowania podanego ciągu. Pozwala to ustawić język/kulturę, która będzie używana tylko w obrębie tego zapytania (a nawet różnych części zapytania) bez konieczności zmiany ustawień języka dla bieżącej sesji.
Oto przykład pokazujący, co mam na myśli:
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';
Wynik:
+------------+------------+ | en-US | en-GB | |------------+------------| | 2018-01-06 | 2018-06-01 | +------------+------------+
Jeśli nie podasz tego argumentu, używany jest język bieżącej sesji.
Znajdź aktualny język
Aby zwrócić aktualnie używany język, możesz uruchomić następującą instrukcję:
SELECT @@LANGUAGE;
Aby uzyskać więcej opcji, zobacz 3 sposoby uzyskania języka bieżącej sesji w SQL Server (T-SQL).
Znajdź dostępne języki
Możesz uruchomić następujący kod, aby zwrócić listę dostępnych języków:
EXEC sp_helplanguage;
Spowoduje to zwrócenie listy wszystkich języków.
Aby zawęzić go do konkretnego języka, dodaj nazwę języka. Tak:
EXEC sp_helplanguage Spanish;