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.