Možná víte, že když se připojíte k serveru SQL Server, jazyk této relace je obvykle určen vaším přihlášením. Po vytvoření přihlášení je mu přiřazen výchozí jazyk.
Jazyk relace určuje datum a čas formáty a systémové zprávy.
I když jistě můžete změnit výchozí jazyk pro přihlášení, můžete také výchozí jazyk v rámci relace v případě potřeby přepsat. V případě potřeby můžete přepínat mezi jazyky. Nebo můžete dokonce otevřít dvě samostatná připojení a na každé z nich použít jiný jazyk.
Tento článek vysvětluje, jak změnit jazyk během relace.
NASTAVIT JAZYK
SET LANGUAGE
umožňuje nastavit jazykové prostředí pro aktuální relaci.
Zde je příklad.
SET LANGUAGE British;
To nastaví aktuální jazyk na britský.
Mohu to ověřit pomocí následujícího dotazu.
SELECT @@LANGUAGE;
Výsledek:
British
Formáty data
Měli byste vědět, že změna jazyka v rámci relace také změní formát data.
Zde je další dotaz, který to ilustruje.
DBCC USEROPTIONS;
Výsledek:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | British | | dateformat | dmy | | datefirst | 1 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Všimněte si, že dateformat
je dmy
a datefirst
je 1
. Toto je v souladu s britským formátem data.
Zde je to, co se stane, když změním jazyk na us_english
.
SET LANGUAGE us_english; ....... DBCC USEROPTIONS; Time: 0.738s Changed language setting to us_english. +-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | mdy | | datefirst | 7 | | lock_timeout | 5000 | | quoted_identifier | SET | | arithabort | SET | | ansi_null_dflt_on | SET | | ansi_warnings | SET | | ansi_padding | SET | | ansi_nulls | SET | | concat_null_yields_null | SET | | isolation level | read committed | +-------------------------+----------------+
Všimněte si, že formát data je implicitně změněn tak, aby odpovídal formátu data v USA.
Pokud to považujete za problematické, můžete vždy změnit formát data bez změny jazyka.
Nastavit jazyk na úrovni dotazu
Některé funkce přijímají argument „kultura“, který vám umožňuje určit jazyk, který se má použít pouze pro tento dotaz. Jinými slovy, jazyk můžete změnit ad-hoc v rámci dotazu, aniž byste museli měnit jazyk aktuální relace.
Zde je příklad.
SET LANGUAGE us_english;
SELECT
FORMAT(GETDATE(), 'd') AS [My Default],
FORMAT(GETDATE(), 'd', 'en-GB') AS [British],
FORMAT(GETDATE(), 'd', 'de-DE') AS [German];
Výsledek:
+--------------+------------+------------+ | My Default | British | German | |--------------+------------+------------| | 3/29/2020 | 29/03/2020 | 29.03.2020 | +--------------+------------+------------+
Získejte seznam jazyků
Chcete-li získat seznam jazyků dostupných na serveru SQL Server, můžete spustit následující dotaz.
EXEC sp_helplanguage;
Můžete jej také zúžit na konkrétní jazyk tak, že k němu přidáte název jazyka nebo alias.
EXEC sp_helplanguage Italian;