SQL Serverでは、現在のセッションで使用する言語を設定できます。現在の言語設定によって、すべてのシステムメッセージで使用される言語と、使用する日付/時刻の形式が決まります。
この記事では、T-SQLを使用してSQLServerで現在の言語環境を設定する方法について説明します。
構文
現在の言語を設定するための構文は次のようになります:
SET LANGUAGE { [ N ] 'language' | @language_var }
ここで[N]'language' | @language_var
sys.syslanguages
に保存されている言語の名前です。 システム互換表示。この引数は、UnicodeまたはUnicodeに変換されたDBCSのいずれかです。
Unicodeで言語を指定するには、 Nを使用します '言語'。変数として指定する場合、変数は sysnameである必要があります データ型( sysname データ型は、テーブルの列、変数、およびオブジェクト名を格納するストアドプロシージャパラメータに使用されます。
例1-言語の設定
現在のセッションの言語を英国語に設定する例を次に示します。
SET LANGUAGE British;
結果:
Changed language setting to British.
現在のセッションの言語をドイツ語に設定する例を次に示します。
SET LANGUAGE German;
結果:
Die Spracheneinstellung wurde in Deutsch geändert.
したがって、出力はすでに新しく指定された言語であることがわかります。
例2–クエリの実行
言語を変更すると、日付のフォーマット方法に影響します。これが私の意味を示す例です。
まず、言語をBritish
に変更します 次に、クエリを実行して文字列を日付に変換します データ型:
SET LANGUAGE British; SELECT CONVERT(date, '09/01/2030') AS 'Convert';
結果:
+------------+ | Convert | |------------| | 2030-01-09 | +------------+ Changed language setting to British.
この場合、日付は1月9日として翻訳されます。
次に、言語をus_English
に変更します 同じクエリを実行します:
SET LANGUAGE us_english; SELECT CONVERT(date, '09/01/2030') AS 'Convert';
結果:
+------------+ | Convert | |------------| | 2030-09-01 | +------------+ Changed language setting to us_english.
したがって、この場合、新しい言語設定により、日付は9月1日として翻訳されました。
クエリレベルでの言語の設定
一部のT-SQL関数では、クエリレベルで使用する言語/カルチャを指定できます。例:PARSE()
指定された文字列のフォーマット方法を決定するために使用されるオプションの引数を受け入れます。これにより、現在のセッションの言語設定を変更することなく、そのクエリ内(およびクエリのさまざまな部分)でのみ使用される言語/カルチャを設定できます。
これが私の意味を示す例です:
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';
結果:
+------------+------------+ | en-US | en-GB | |------------+------------| | 2018-01-06 | 2018-06-01 | +------------+------------+
この引数を指定しない場合は、現在のセッションの言語が使用されます。
現在の言語を探す
次のステートメントを実行して、現在使用されている言語を返すことができます。
SELECT @@LANGUAGE;
その他のオプションについては、SQL Server(T-SQL)で現在のセッションの言語を取得する3つの方法を参照してください。
利用可能な言語を見つける
次のコードを実行して、使用可能な言語のリストを返すことができます。
EXEC sp_helplanguage;
これにより、すべての言語のリストが返されます。
特定の言語に絞り込むには、言語名を追加します。このように:
EXEC sp_helplanguage Spanish;