sql >> データベース >  >> NoSQL >> MongoDB

SQL RPAD()

    SQLでは、RPAD() 文字列の右側を指定された文字で埋めるために使用されます。この関数は文字列と数値に使用できますが、DBMSによっては、数値をパディングする前に文字列として渡す必要がある場合があります。

    RPAD()を持つDBMS 関数には、MySQL、MariaDB、PostgreSQL、およびOracleが含まれます。

    しないDBMS RPAD()があります 関数にはSQLServerとSQLiteが含まれます。

    RPAD()を示す例を次に示します。 機能:

    SELECT RPAD('Look Right', 40);

    結果:

    +------------------------------------------+
    | RPAD('Look Right', 40)                   |
    +------------------------------------------+
    | Look Right                               |
    +------------------------------------------+
    >

    ここでは、文字列の右側にスペース(デフォルトの埋め込み文字)が埋め込まれ、結果の文字列の長さは40文字になります(40を指定したため) 2番目の引数として)。

    Oracleも同じように機能しますが、FROM DUALを使用する必要があります このようなクエリを実行する場合(実際のテーブルをクエリせずに):

    SELECT RPAD('Look Right', 40) 
    FROM DUAL;

    結果:

                           RPAD('LOOKRIGHT',40) 
    ___________________________________________ 
    Look Right                                 

    上記の例では、パディングを明確にするために多くのパディングを使用しました。

    正しいパディングをより明確に示す別の例を次に示します。

    SELECT CONCAT(RPAD('abc', 4), 'def');

    結果:

    abc def

    この場合、abcを連結しました defを使用 しかし、abc RPAD()で右パディングが適用されました 機能。

    パディング文字を指定

    パディングは必ずしもスペースである必要はありません。オプションで、3番目の引数を追加して、パディングで使用する1つまたは複数の文字を指定できます。

    SELECT RPAD('Rat', 4, 't');

    結果:

    Ratt

    また、ゼロ(または別の数字)で数字を右に埋めるために使用することもできます:

    SELECT RPAD('7', 3, '0');

    結果:

    700

    これにより明らかに数値が変わります。この場合、数値に100を掛けるだけで同じことが達成できます。ただし、数値を掛けても実際にはパディングは適用されません。

    次の例は、私が何を意味するかを示しています。

    SELECT RPAD('77', 3, '0');

    結果:

    770

    77に100を掛けると、間違った結果になります。

    上記の例では、番号を文字列として渡しました。

    一部のDBMS(MariaDBやMySQLなど)では、数値を数値として渡すことができます。また、数値を埋めるために次のように渡すことができます。

    SELECT RPAD(7, 3, 0);

    結果:

    700

    Oracleでもこれを行うことができます:

    SELECT RPAD(7, 3, 0) 
    FROM DUAL;

    結果:

    700

    しかし、PostgreSQLにはこれに関する問題があります:

    SELECT RPAD(7, 3, 0);

    結果:

    ERROR:  function rpad(integer, integer, integer) does not exist

    SQL Server

    SQLServerにはRPAD()がありません 関数ですが、数字や文字列にパディングを追加することを妨げるものではありません。

    数字

    数値に小数部分がある場合、FORMAT() 関数で十分です:

    SELECT 
        FORMAT(0.7, '.000') AS "1",
        FORMAT(0.7, '0.00') AS "2",
        FORMAT(7.0, '0.00') AS "3";

    結果:

    +------+------+------+
    | 1    | 2    | 3    |
    |------+------+------|
    | .700 | 0.70 | 7.00 |
    +------+------+------+

    それが機能する方法は、数値に続いてフォーマット文字列を渡すことです。上記の例では、フォーマット文字列はカスタム数値フォーマット指定子で構成されており、元の数値の小数部分に数字が追加されます。元の数値にまだそれほど多くの桁がない場合は、ゼロが埋め込まれます。

    ただし、数値に小数部分が含まれていない場合は、REPLACE()を使用できます。 FORMAT()で適用される小数点記号を削除する関数 機能:

    SELECT 
        REPLACE(FORMAT(7, '.00', 'en-US'), '.', '') AS "1",
        REPLACE(FORMAT(17, '.00', 'en-US'), '.', '') AS "2",
        REPLACE(FORMAT(73.5, '.00', 'en-US'), '.', '') AS "3";

    結果:

    +-----+------+------+
    | 1   | 2    | 3    |
    |-----+------+------|
    | 700 | 1700 | 7350 |
    +-----+------+------+

    この方法は、必要に応じて先行ゼロを追加するためにも使用できます。フォーマット文字列の小数点の左側に追加するだけです。

    ここでは、明示的にen-USを使用しました 小数点がピリオド/ピリオド/ピリオドであることを確認するための(オプションの)3番目の引数として。これはen-USで使用される規則です。 ロケール。

    テキスト

    テキストデータに使用できる手法は次のとおりです。

    SELECT 
        LEFT('Dog' + '.........', 9) AS "1",
        LEFT('Horse' + '.........', 9) AS "2",
        LEFT('Crocodile' + '.........', 9) AS "3";

    結果:

    +-----------+-----------+-----------+
    | 1         | 2         | 3         |
    |-----------+-----------+-----------|
    | Dog...... | Horse.... | Crocodile |
    +-----------+-----------+-----------+

    ただし、誤って文字列の一部を切り落としたり、不要なスペースを追加したりしないように注意する必要があります。


    1. JSONを表すRedis文字列とRedisハッシュ:効率?

    2. MongoDBネストされたオブジェクトの被写界深度の制限

    3. MongoDBでインデックスを使用した並べ替えはどのように機能しますか?

    4. ドキュメントの配列内のオブジェクトをどのように更新しますか(ネストされた更新)