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

PostgreSQLで小数点から末尾のゼロを削除する方法

    問題:

    10進数の小数部分から末尾のゼロを削除したい。

    例:

    データベースには、ribbon id列にデータがあります 、名前 、および (メートル単位で、4桁の小数部分を持つ10進数で示されます)。

    id 名前
    1 ラージサテンN24 1.2000
    2 作成Yc2 0.5500
    3 スリーカラー4F1 3.2050
    4 ブルーリボンLB1 0.1265

    リボンの名前と幅をメートル単位で取得しましょう。ただし、末尾のゼロは使用しません。

    解決策:

    演算子‘::’を使用します 10進数をREALデータ型に変換します。作成するクエリは次のとおりです。

    SELECT name, 
      width::REAL 
    FROM ribbon;
    

    結果は次のとおりです。

    name new_width
    ラージサテンN24 1.2
    作成Yc2 0.55
    3色4F1 3.205
    ブルーリボンLB1 0.1265

    ディスカッション:

    ::を使用する 末尾のゼロを含む10進数を、追加のゼロを含まない数値に変換する演算子。この演算子は、左側の値を右側に配置されたデータ型に変換します。

    この例では、幅の10進値がREALデータ型に変換されており、末尾のゼロは表示されません。 「LargeSatinN24」リボンには、widthがあります 1.2000の値–ただし、この数値の小数部分にゼロは必要ありません。したがって、REALデータ型に変換してそれらをカットしました(この例では、3つのゼロが削除されました)。末尾のゼロのみが削除されるため、数値を表示するのに便利な方法です。たとえば、「Blue Ribbon LB1」には小数点以下の末尾のゼロがないため、変換後もその値は同じままです。

    すべての値の小数部分に同じ数のゼロがある場合は、TRUNC()を使用します 働き。 2つの引数を取ります。数値を含む値/列名と、必要な小数桁数を示す整数です。残りはカットされます。 width列の値が異なる同じ例を見てください :

    id 名前
    1 ラージサテンN24 1.200
    2 作成Yc2 0.500
    3 スリーカラー4F1 3.200
    4 ブルーリボンLB1 0.100

    ソリューション2:

    作成するクエリは次のとおりです。

    SELECT name, 
      TRUNC(width,1) 
    FROM ribbon;
    

    結果は次のとおりです。

    name new_width
    ラージサテンN24 1.0
    作成Yc2 0.5
    3色4F1 3.2
    ブルーリボンLB1 0.1

    小数部は1桁のみ表示されます。 TRUNC()は、ゼロだけでなくすべての桁をカットすることに注意してください。


    1. 'データのロード'でのMysql権限エラー

    2. MariaDBで日付に年を追加する6つの方法

    3. 他のテーブルの主キーではない外部キーを持つことはできますか?

    4. 表スペースSYSMGMTDATAがグリッド・インフラストラクチャ管理リポジトリ(MGMTDB)でいっぱいです