PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć końcowe zera z liczby dziesiętnej w PostgreSQL?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw obraz do bazy postgresql

  2. Wartość Postgres SSLMode wymaga nieważności, gdy obsługa protokołu SSL nie jest skompilowana przy użyciu zewnętrznego opakowania danych

  3. Nieprawidłowe sortowanie/sortowanie/kolejność ze spacjami w Postgresql 9.4

  4. Wybrać pierwszy wiersz w każdej grupie GROUP BY?

  5. Pierwsze kroki z replikacją strumieniową PostgreSQL