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

SQL Server(T-SQL)でのTRANSLATE()関数のしくみ

    SQL Serverでは、T-SQL TRANSLATE() 関数は、2番目の引数で指定された一部の文字が、3番目の引数で指定された宛先の文字セットに変換された後、最初の引数として提供された文字列を返します。

    REPLACE()に似ています 機能しますが、いくつかの重要な違いがあります。

    TRANSLATE() 関数には3つの引数が必要です。入力文字列、置換される文字、およびそれらを置換する文字。

    構文

    構文は次のようになります:

    TRANSLATE ( inputString, characters, translations)

    ここで、 inputString 置換する文字を含む文字列です。

    文字 引数は、置き換える文字を指定します。

    翻訳 引数は、それらの文字を何に置き換えるかを指定します。

    例1-基本的な使用法

    仕組みの例を次に示します。

    SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | Cow      |
    +----------+
    

    したがって、この例では、a およびt 文字はoに置き換えられました およびw

    この場合、REPLACE() 関数は同じ結果を生成します。 2つの機能を並べて示します。

    SELECT 
      TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE',
      REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
    

    結果:

    +-------------+-----------+
    | TRANSLATE   | REPLACE   |
    |-------------+-----------|
    | Cow         | Cow       |
    +-------------+-----------+
    

    この場合、両方の関数の結果は同じですが、理由が異なります。

    各関数の機能は次のとおりです。

    • TRANSLATE() aを置き換えました およびt (個々のキャラクター)
    • REPLACE() atを置き換えました (文字列)

    例2–混合注文

    この例は、TRANSLATE()の場所を示しています REPLACE()とは異なります 。この例では、置き換える文字の順序と、それらを置き換える文字を変更します。

    SELECT 
      TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE',
      REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
    

    結果:

    +-------------+-----------+
    | TRANSLATE   | REPLACE   |
    |-------------+-----------|
    | Cow         | Cat       |
    +-------------+-----------+
    

    この場合、TRANSLATE()のみ 機能が有効になりました。これは、この関数が各文字を1つずつ処理するためです。 REPLACE() 一方、関数は、文字列全体をまったく同じ順序で検索します。

    例3–より強力な例

    次の例は、TRANSLATE()に関するMicrosoftのドキュメントに基づいています。 働き。これは、この関数がREPLACE()よりも大きな利点があるシナリオを示しています。 機能:

    SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
    

    結果:

    +---------------+
    | Result        |
    |---------------|
    | 2*(3+4)/(7-2) |
    +---------------+
    

    REPLACE()を使用して同等の結果を取得するには 関数、これを行う必要があります:

    SELECT
    REPLACE
    (
          REPLACE
          (
                REPLACE
                (
                      REPLACE
                      (
                            '2*[3+4]/{7-2}',
                            '[',
                            '('
                      ),
                      ']',
                      ')'
                ),
                '{',
                '('
          ),
          '}',
          ')'
    ) AS Result;
    

    結果:

    +---------------+
    | Result        |
    |---------------|
    | 2*(3+4)/(7-2) |
    +---------------+
    

    1. UnixtimeをDatetimeSQLに変換する(Oracle)

    2. PRVG-2027ファイルの所有者がノード間で一貫していません

    3. FROM_UNIXTIME()の例– MySQL

    4. MSSQLからMySQLに移行する方法