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

MySQLでのRPAD()関数のしくみ

    MySQLでは、RPAD() 関数を使用すると、文字列の右側の部分を1つ以上の文字で埋めることができます。

    動作方法は、パディングする文字列、パディングの長さ、およびパディングに使用する文字列を指定することです。

    構文

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

    RPAD(str,len,padstr)
    

    str 埋める文字列、len は、すべてのパディングが適用された後の文字列の望ましい長さであり、padstr 埋める文字列です。

    例1-基本的な使用法

    文字列の右側に感嘆符を付ける例を次に示します。

    SELECT RPAD('Cat', 6, '!') AS Result;
    

    結果:

    +--------+
    | Result |
    +--------+
    | Cat!!! |
    +--------+
    

    この例では、2番目の引数は6です。 、つまり、すべてのパディングが適用された後、文字列全体の長さは6文字になる必要があります。 3番目の引数は、パディングに使用する文字を指定します。

    したがって、この場合、感嘆符が1つだけ必要な場合は、次のように実行できます。

    SELECT RPAD('Cat', 4, '!') AS Result;
    

    結果:

    +--------+
    | Result |
    +--------+
    | Cat!   |
    +--------+
    

    例2–複数の文字

    キャラクターは1人だけではありません。文字列には任意の数の文字を埋め込むことができます。

    たとえば、前の例を使用して、感嘆符の前にスペースを追加できます。

    SELECT RPAD('Cat', 5, ' !') AS Result;
    

    結果:

    +--------+
    | Result |
    +--------+
    | Cat !  |
    +--------+
    

    文字数も5に増やしたことに注意してください 余分なキャラクターに対応するため。

    さまざまな文字を使用した別の例を次に示します。

    SELECT RPAD('Dog', 7, 'gone') AS Result;
    

    結果:

    +---------+
    | Result  |
    +---------+
    | Doggone |
    +---------+
    

    例3–2番目の引数が小さすぎる

    2番目の引数の値が小さすぎると、パディングがなくなる可能性があります:

    SELECT RPAD('Cat', 3, '!') AS Result;
    

    結果:

    +--------+
    | Result |
    +--------+
    | Cat    |
    +--------+
    

    また、パディングストリングが短くカットされたり、元のストリングが短くカットされたりする場合もあります。

    SELECT 
      RPAD('Dog', 6, 'gone'),
      RPAD('Dog', 2, 'gone');
    

    結果:

    +------------------------+------------------------+
    | RPAD('Dog', 6, 'gone') | RPAD('Dog', 2, 'gone') |
    +------------------------+------------------------+
    | Doggon                 | Do                     |
    +------------------------+------------------------+
    

    これらの例はデモンストレーションのみを目的としていることに注意してください。ほとんどの場合、RPAD()は使用しません 2つの単語を単純に結合します。そのためには、CONCAT()を使用することをお勧めします 代わりに。

    例4–データベースの例

    データベースからデータを選択し、その右側にデータをパディングする例を次に示します。

    SELECT ArtistName, RPAD(ArtistName, 20, '.')
    FROM Artists;
    

    結果:

    +------------------------+---------------------------+
    | ArtistName             | RPAD(ArtistName, 20, '.') |
    +------------------------+---------------------------+
    | Iron Maiden            | Iron Maiden.........      |
    | AC/DC                  | AC/DC...............      |
    | Allan Holdsworth       | Allan Holdsworth....      |
    | Buddy Rich             | Buddy Rich..........      |
    | Devin Townsend         | Devin Townsend......      |
    | Jim Reeves             | Jim Reeves..........      |
    | Tom Jones              | Tom Jones...........      |
    | Maroon 5               | Maroon 5............      |
    | The Script             | The Script..........      |
    | Lit                    | Lit.................      |
    | Black Sabbath          | Black Sabbath.......      |
    | Michael Learns to Rock | Michael Learns to Ro      |
    | Carabao                | Carabao.............      |
    | Karnivool              | Karnivool...........      |
    | Birds of Tokyo         | Birds of Tokyo......      |
    | Bodyjar                | Bodyjar.............      |
    +------------------------+---------------------------+
    


    1. 参加の排除:SQLServerが不要なテーブルを削除する場合

    2. OracleDatabaseでのPL/SQLサブルーチンの呼び出し表記

    3. CのPostgreSQL配列アクセスがPL/pgSQLよりもはるかに高速なのはなぜですか?

    4. DistinctとGroupByのパフォーマンスが異なる場合はどうなりますか?