Problem:
Sie möchten nachgestellte Nullen aus dem Bruchteil einer Dezimalzahl entfernen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens ribbon
mit Daten in den Spalten id , Name und Breite (in Metern, angegeben durch eine Dezimalzahl mit einem 4-stelligen Bruchteil).
id | Name | Breite |
---|---|---|
1 | Großer Satin N24 | 1.2000 |
2 | Erstellung Yc2 | 0,5500 |
3 | Dreifarbig 4F1 | 3.2050 |
4 | Blaues Band LB1 | 0,1265 |
Holen wir uns die Namen der Bänder zusammen mit ihrer Breite in Metern, aber ohne nachgestellte Nullen.
Lösung:
Wir verwenden den Operator ‘::’
um die Dezimalzahl in einen REAL-Datentyp umzuwandeln. Hier ist die Abfrage, die Sie schreiben würden:
SELECT name, width::REAL FROM ribbon;
Hier ist das Ergebnis:
name | neue_Breite |
---|---|
Großer Satin N24 | 1.2 |
Erstellung Yc2 | 0,55 |
Dreifarbig 4F1 | 3.205 |
Blaues Band LB1 | 0,1265 |
Diskussion:
Verwenden Sie den ::
-Operator, um eine Dezimalzahl mit nachgestellten Nullen in eine Zahl ohne zusätzliche Nullen umzuwandeln. Dieser Operator wandelt den Wert links in den rechts platzierten Datentyp um.
In unserem Beispiel wurde der Dezimalwert in Breite in den REAL-Datentyp konvertiert, der keine nachgestellten Nullen anzeigt. Das „Large Satin N24“-Band hat eine width
Wert von 1,2000 – aber wir brauchen keine Nullen im Bruchteil dieser Zahl. Daher haben wir sie in den REAL-Datentyp konvertiert, um sie zu kürzen (in unserem Beispiel wurden drei Nullen entfernt). Es ist eine bequeme Möglichkeit, die Zahl anzuzeigen, da nur die nachgestellten Nullen entfernt werden. Beispielsweise hat „Blue Ribbon LB1“ keine abschließenden Nullen nach dem Dezimalkomma, sodass sein Wert nach der Konvertierung gleich bleibt.
Wenn Sie die gleiche Anzahl von Nullen im Bruchteil all Ihrer Werte haben, verwenden Sie TRUNC()
Funktion. Es braucht zwei Argumente:den Wert/Spaltennamen, der die Zahl und eine Ganzzahl enthält, die die gewünschte Anzahl von Nachkommastellen angibt; der Rest wird geschnitten. Betrachten Sie dasselbe Beispiel mit unterschiedlichen Werten in der Spalte width
:
id | Name | Breite |
---|---|---|
1 | Großer Satin N24 | 1.200 |
2 | Erstellung Yc2 | 0,500 |
3 | Dreifarbig 4F1 | 3.200 |
4 | Blaues Band LB1 | 0,100 |
Lösung 2:
Hier ist die Abfrage, die Sie schreiben würden:
SELECT name, TRUNC(width,1) FROM ribbon;
Hier ist das Ergebnis:
name | neue_Breite |
---|---|
Großer Satin N24 | 1.0 |
Erstellung Yc2 | 0,5 |
Dreifarbig 4F1 | 3.2 |
Blaues Band LB1 | 0,1 |
Im Dezimalteil wird nur eine Ziffer angezeigt. Beachten Sie, dass TRUNC() alle Ziffern schneidet, nicht nur Nullen.