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

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

    SQL Serverでは、T-SQL REPLICATE() 関数は文字列値を指定された回数繰り返し、結果を返します。

    この関数は2つの引数を受け入れます。入力文字列、およびそれを繰り返す必要がある回数。

    構文

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

    REPLICATE ( string_expression ,integer_expression )

    ここで、 string_expression 入力文字列です。これは、文字データまたはバイナリデータのいずれかです。

    そしてinteger_expression 入力文字列を繰り返す回数を指定する整数です。これは、 bigintを含む任意の整数型にすることができます 。

    最初の引数がvarchar(max)型でない場合は注意してください またはnvarchar(max) 、関数は8,000バイトで戻り値を切り捨てます。 8,000バイトを超える値を返すには、最初の引数を適切な大きな値のデータ型に明示的にキャストする必要があります。

    例1-基本的な使用法

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

    SELECT REPLICATE('Dog', 3) AS Result;

    結果:

    +-----------+
    | Result    |
    |-----------|
    | DogDogDog |
    +-----------+
    

    例2–スペースを追加する

    前の例にスペースを追加することもできます:

    SELECT REPLICATE('Dog', 3) AS Result;

    結果:

    +--------------+
    | Result       |
    |--------------|
    | Dog Dog Dog  |
    +--------------+
    

    ただし、これにより文字列の末尾にもスペースが追加されることに注意してください。

    TRIM()を使用できます これを克服するための機能:

    SELECT TRIM(REPLICATE('Dog ', 3)) AS Result;

    結果:

    +-------------+
    | Result      |
    |-------------|
    | Dog Dog Dog |
    +-------------+
    

    次の例で、これがより明確になるかもしれません:

    SELECT 
      REPLICATE('Dog ', 3) + '.' AS 'Untrimmed',
      TRIM(REPLICATE('Dog ', 3)) + '.' AS 'Trimmed';

    結果:

    +---------------+--------------+
    | Untrimmed     | Trimmed      |
    |---------------+--------------|
    | Dog Dog Dog . | Dog Dog Dog. |
    +---------------+--------------+
    

    例3–無効なレプリケーションカウント

    2番目の引数が負の値の場合、NULL 返されます:

    SELECT REPLICATE('Dog', -3) AS Result;

    結果:

    +----------+
    | Result   |
    |----------|
    | NULL     |
    +----------+
    

    例4–データベースの例

    データベースからデータを複製する例を次に示します。

    SELECT TOP(3) 
    TRIM(REPLICATE(ArtistName + ' ', 3)) AS Result
    FROM Artists;
    

    結果:

    +----------------------------------------------------+
    | Result                                             |
    |----------------------------------------------------|
    | Iron Maiden Iron Maiden Iron Maiden                |
    | AC/DC AC/DC AC/DC                                  |
    | Allan Holdsworth Allan Holdsworth Allan Holdsworth |
    +----------------------------------------------------+
    

    1. MySQLの列を更新します

    2. SQLiteException:テーブルはすでに存在します

    3. SQL ServerのCAST()とTRY_CAST():違いは何ですか?

    4. 接続文字列からデフォルトのスキーマを設定できますか?