Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak ustawić bieżący język w SQL Server (T-SQL)

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Import SSIS Excel wymuszający nieprawidłowy typ kolumny

  2. Zrozumienie grupowania według klauzuli w SQL Server — samouczek SQL Server / TSQL, część 130

  3. Jak włączyć wszystkie ograniczenia wyboru i klucza obcego dla tabeli w SQL Server (przykłady T-SQL)

  4. Przypadki użycia instrukcji MERGE programu SQL Server:synchronizowanie tabel online i historii

  5. Jak uzyskać nazwy kolumn z tabeli w SQL Server?