Problem:
Chcesz usunąć końcowe zera z części ułamkowej liczby dziesiętnej.
Przykład:
Nasza baza danych zawiera tabelę o nazwie ribbon
z danymi w kolumnach id , imię i szerokość (w metrach, oznaczone liczbą dziesiętną z 4-cyfrową częścią ułamkową).
id | imię | szerokość |
---|---|---|
1 | Duża Satyna N24 | 1,2000 |
2 | Tworzenie Yc2 | 0,5500 |
3 | Trzy kolory 4F1 | 3.2050 |
4 | Niebieska wstążka LB1 | 0.1265 |
Pobierzmy nazwy wstążek wraz z ich szerokością w metrach, ale bez końcowych zer.
Rozwiązanie:
Użyjemy operatora ‘::’
aby przekonwertować liczbę dziesiętną na RZECZYWISTY typ danych. Oto zapytanie, które napiszesz:
SELECT name, width::REAL FROM ribbon;
Oto wynik:
nazwa | nowa_szerokość |
---|---|
Duża satyna N24 | 1.2 |
Tworzenie Yc2 | 0,55 |
Trzy kolory 4F1 | 3,205 |
Niebieska wstążka LB1 | 0.1265 |
Dyskusja:
Użyj ::
operator do konwersji liczby dziesiętnej zawierającej końcowe zera na liczbę bez dodatkowych zer. Ten operator konwertuje wartość po lewej stronie na typ danych umieszczony po prawej stronie.
W naszym przykładzie wartość dziesiętna szerokości została przekonwertowana na typ danych REAL, który nie wyświetla końcowych zer. Wstążka „Duża Satyna N24” ma width
wartość 1,2000 – ale nie potrzebujemy zer w części ułamkowej tej liczby. Dlatego przekonwertowaliśmy na typ danych REAL, aby je wyciąć (w naszym przykładzie usunięto trzy zera). Jest to wygodny sposób wyświetlania liczby, ponieważ usuwa tylko końcowe zera; na przykład „Niebieska wstążka LB1” nie ma żadnych końcowych zer po przecinku, więc jego wartość pozostaje taka sama po konwersji.
Jeśli masz taką samą liczbę zer w części ułamkowej wszystkich swoich wartości, użyj TRUNC()
funkcjonować. Przyjmuje dwa argumenty:nazwę wartości/kolumny zawierającą liczbę i liczbę całkowitą wskazującą żądaną liczbę cyfr ułamkowych; reszta jest wycięta. Spójrz na ten sam przykład z różnymi wartościami w kolumnie width
:
id | imię | szerokość |
---|---|---|
1 | Duża Satyna N24 | 1200 |
2 | Tworzenie Yc2 | 0,500 |
3 | Trzy kolory 4F1 | 3,200 |
4 | Niebieska wstążka LB1 | 0.100 |
Rozwiązanie 2:
Oto zapytanie, które napiszesz:
SELECT name, TRUNC(width,1) FROM ribbon;
Oto wynik:
nazwa | nowa_szerokość |
---|---|
Duża satyna N24 | 1.0 |
Tworzenie Yc2 | 0,5 |
Trzy kolory 4F1 | 3.2 |
Niebieska wstążka LB1 | 0.1 |
W części dziesiętnej wyświetlana jest tylko jedna cyfra. Zwróć uwagę, że TRUNC() wycina wszystkie cyfry, a nie tylko zera.