sql >> Databáze >  >> RDS >> PostgreSQL

Jak odstranit koncové nuly z desetinných míst v PostgreSQL

Problém:

Chcete odstranit koncové nuly z desetinné části desetinného čísla.

Příklad:

Naše databáze má tabulku s názvem ribbon s údaji ve sloupcích id , jméno a šířka (v metrech, značeno desetinným číslem se 4místnou zlomkovou částí).

id jméno šířka
1 Velký satén N24 1,2000
2 Vytvoření Yc2 0,5500
3 Tři barvy 4F1 3,2050
4 Modrá stuha LB1 0,1265

Pojďme získat názvy pásků spolu s jejich šířkou v metrech, ale bez koncových nul.

Řešení:

Použijeme operátor ‘::’ pro převod desetinného čísla na datový typ REAL. Zde je dotaz, který byste napsali:

SELECT name, 
  width::REAL 
FROM ribbon;

Zde je výsledek:

name new_width
Velký satén N24 1.2
Vytvoření Yc2 0,55
Tři barvy 4F1 3,205
Modrá stuha LB1 0,1265

Diskuse:

Použijte :: operátor pro převod desítkového čísla obsahujícího koncové nuly na číslo bez dalších nul. Tento operátor převádí hodnotu vlevo na datový typ umístěný vpravo.

V našem příkladu byla desetinná hodnota na šířku převedena na datový typ REAL, který nezobrazuje koncové nuly. Páska „Large Satin N24“ má width hodnotu 1,2000 – ale nepotřebujeme nuly ve zlomkové části tohoto čísla. Proto jsme je převedli na datový typ REAL, abychom je ořízli (v našem příkladu byly odstraněny tři nuly). Je to pohodlný způsob zobrazení čísla, protože odstraňuje pouze koncové nuly; například „Blue Ribbon LB1“ nemá za desetinnou čárkou žádné koncové nuly, takže jeho hodnota zůstane po převodu stejná.

Pokud máte ve zlomkové části všech hodnot stejný počet nul, použijte TRUNC() funkce. Vyžaduje dva argumenty:název hodnoty/sloupce obsahující číslo a celé číslo udávající požadovaný počet desetinných číslic; zbytek je řezán. Podívejte se na stejný příklad s různými hodnotami ve sloupci width :

id jméno šířka
1 Velký satén N24 1 200
2 Vytvoření Yc2 0,500
3 Tři barvy 4F1 3 200
4 Modrá stuha LB1 0,100

Řešení 2:

Zde je dotaz, který byste napsali:

SELECT name, 
  TRUNC(width,1) 
FROM ribbon;

Zde je výsledek:

name new_width
Velký satén N24 1.0
Vytvoření Yc2 0,5
Tři barvy 4F1 3.2
Modrá stuha LB1 0,1

V desetinné části se zobrazuje pouze jedna číslice. Všimněte si, že TRUNC() vyjme všechny číslice, nejen nuly.


  1. Naposledy, NE, nemůžete věřit IDENT_CURRENT()

  2. Chyba PHP, MySQL:Počet sloupců neodpovídá počtu hodnot na řádku 1

  3. SQL SELECT MIN

  4. Jak funguje NULLIF() na serveru SQL Server