問題:
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()は、ゼロだけでなくすべての桁をカットすることに注意してください。