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.