sql >> データベース >  >> RDS >> Sqlserver

SQLServerで現在のセッションの言語を変更する

    SQL Serverに接続するとき、そのセッションの言語は通常、ログインによって決定されることをご存知かもしれません。ログインが作成されると、デフォルトの言語が割り当てられます。

    セッション言語によって日時が決まります フォーマットとシステムメッセージ。

    ログインのデフォルト言語は確かに変更できますが、必要に応じてセッション内でデフォルト言語を上書きすることもできます。必要に応じて、言語を切り替えることができます。または、2つの別々の接続を開いて、それぞれに異なる言語を適用することもできます。

    この記事では、セッション内で言語を変更する方法について説明します。

    言語の設定

    SET LANGUAGE ステートメントを使用すると、現在のセッションの言語環境を設定できます。

    これが例です。

    SET LANGUAGE British;

    これにより、現在の言語が英国に設定されます。

    次のクエリでこれを確認できます。

    SELECT @@LANGUAGE;

    結果:

    British

    日付形式

    セッション内で言語を変更すると、日付形式も変更されることを知っておく必要があります。

    これを説明する別のクエリがあります。

    DBCC USEROPTIONS;

    結果:

    +-------------------------+----------------+
     | 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 |
     +-------------------------+----------------+ 

    dateformatに注意してください dmyです およびdatefirst 1です 。これは、英国の日付形式と一致しています。

    言語を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 |
     +-------------------------+----------------+  

    米国の日付形式に準拠するように、日付形式が暗黙的に変更されていることに注意してください。

    これに問題がある場合は、言語を変更せずにいつでも日付形式を変更できます。

    クエリレベルで言語を設定

    一部の関数は、そのクエリにのみ使用する言語を指定できる「カルチャ」引数を受け入れます。つまり、現在のセッションの言語を変更しなくても、クエリ内でその場限りの言語を変更できます。

    これが例です。

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

    結果:

    +--------------+------------+------------+
     | My Default   | British    | German     |
     |--------------+------------+------------|
     | 3/29/2020    | 29/03/2020 | 29.03.2020 |
     +--------------+------------+------------+  

    言語のリストを取得する

    次のクエリを実行して、SQLServerで使用可能な言語のリストを取得できます。

    EXEC sp_helplanguage;

    言語名またはエイリアスを追加して、特定の言語に絞り込むこともできます。

    EXEC sp_helplanguage Italian;

    1. 結合更新のMySQL構文

    2. SQL Serverテーブルに列が存在するかどうかを確認するにはどうすればよいですか?

    3. 実際のエスケープ文字列とPDO

    4. MySQLでデータベースまたはテーブルのインデックスを表示するにはどうすればよいですか?