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

PostgreSQLで先行ゼロを追加する2つの方法

    PostgreSQLでは、TO_CHAR()を使用できます 数値に先行ゼロを追加する関数。この関数は、指定した(オプションの)形式を使用して、数値を文字列に変換します。

    もう1つのオプションは、LPAD()を使用することです。 先行ゼロで数値を埋める関数。

    TO_CHAR() 機能

    TO_CHAR()を使用する場合 関数、0を使用します 先頭および/または末尾のゼロを含めるように要素をフォーマットします。

    例:

    SELECT TO_CHAR(7, 'fm000');

    結果:

    007

    これが9と比較した場合です フォーマット要素:

    SELECT 
        TO_CHAR(7, 'fm999') AS "9",
        TO_CHAR(7, 'fm000') AS "0";

    結果:

     9 |  0  
    ---+-----
     7 | 007

    先行ゼロの数は、0の数によって決まります。 フォーマット要素と数値の桁数:

    SELECT 
        TO_CHAR(77, 'fm0') AS "r1",
        TO_CHAR(77, 'fm00000') AS "r2",
        TO_CHAR(777, 'fm00000') AS "r3",
        TO_CHAR(7777, 'fm00000') AS "r4",
        TO_CHAR(77777, 'fm00000') AS "r5";

    結果:

     r1 |  r2   |  r3   |  r4   |  r5   
    ----+-------+-------+-------+-------
     #  | 00077 | 00777 | 07777 | 77777

    fm format修飾子は、結果に含まれる可能性のある先頭または末尾のパディングを抑制します。たとえば、数値が負の場合、マイナス記号が前に付けられます。ただし、数値が正の場合、記号は含まれず、プラス記号があったはずの場所にスペースが表示されます。

    これを示す例を次に示します。

    SELECT 
        TO_CHAR(-7, '000') AS "Minus Sign",
        TO_CHAR(7, '000') AS "Padded",
        TO_CHAR(7, 'fm000') AS "Not Padded";

    結果:

     Minus Sign | Padded | Not Padded 
    ------------+--------+------------
     -007       |  007   | 007

    LPAD() 機能

    または、LPAD()を使用することもできます 先行ゼロで数値を埋める関数:

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

    結果:

    007

    別の例:

    SELECT 
        LPAD('77', 1, '0') AS "r1",
        LPAD('77', 5, '0') AS "r2",
        LPAD('777', 5, '0') AS "r3",
        LPAD('7777', 5, '0') AS "r4",
        LPAD('77777', 5, '0') AS "r5";

    結果:

     r1 |  r2   |  r3   |  r4   |  r5   
    ----+-------+-------+-------+-------
     7  | 00077 | 00777 | 07777 | 77777

    この関数では、数値を文字列として渡す必要があることに注意してください。したがって、最初に数値を文字列に変換する必要があります。パディング文字も文字列である必要があります。

    したがって、次のようなことを行う必要があるかもしれません:

    SELECT LPAD(CAST(7 AS varchar), 3, '0');

    結果:

    007

    LPAD()のメリットの1つ 前の方法に比べて、結果を他の文字の前に付けることができます。先行ゼロである必要はありません。

    SELECT 
        LPAD('77', 1, '.') AS "r1",
        LPAD('77', 5, '.') AS "r2",
        LPAD('777', 5, '.') AS "r3",
        LPAD('7777', 5, '.') AS "r4",
        LPAD('77777', 5, '.') AS "r5";

    結果:

     r1 |  r2   |  r3   |  r4   |  r5   
    ----+-------+-------+-------+-------
     7  | ...77 | ..777 | .7777 | 77777

    1. VisualStudioでMySQLデータソースに接続する方法

    2. SQL Serverのリンクサーバーから列情報を返す(T-SQLの例)

    3. SQLServerテーブルの列のIDプロパティを削除する方法-SQLServer/T-SQLチュートリアル44

    4. SQLite JSON_EACH()