Problem:
Du vill ta bort avslutande nollor från bråkdelen av ett decimaltal.
Exempel:
Vår databas har en tabell som heter ribbon
med data i kolumnerna id , namn och bredd (i meter, betecknad med ett decimaltal med en 4-siffrig bråkdel).
id | namn | bredd |
---|---|---|
1 | Large Satin N24 | 1 2000 |
2 | Creation Yc2 | 0,5500 |
3 | Tre färg 4F1 | 3.2050 |
4 | Blå band LB1 | 0,1265 |
Låt oss få namnen på band tillsammans med deras bredd i meter, men utan efterföljande nollor.
Lösning:
Vi använder operatorn ‘::’
för att konvertera decimaltalet till en RIKTIG datatyp. Här är frågan du skulle skriva:
SELECT name, width::REAL FROM ribbon;
Här är resultatet:
namn | new_width |
---|---|
Large Satin N24 | 1.2 |
Creation Yc2 | 0,55 |
Tre färg 4F1 | 3,205 |
Blå band LB1 | 0,1265 |
Diskussion:
Använd ::
operator för att konvertera ett decimaltal som innehåller avslutande nollor till ett tal utan ytterligare nollor. Denna operator konverterar värdet till vänster till datatypen placerad till höger.
I vårt exempel konverterades decimalvärdet i bredd till datatypen REAL, som inte visar avslutande nollor. Bandet "Large Satin N24" har en width
värde på 1,2000 – men vi behöver inte nollor i bråkdelen av detta tal. Därför konverterade vi till den REAL datatypen för att klippa dem (i vårt exempel togs tre nollor bort). Det är ett bekvämt sätt att visa numret eftersom det bara tar bort de avslutande nollorna; till exempel har 'Blue Ribbon LB1' inga avslutande nollor efter decimalkomma, så dess värde förblir detsamma efter konvertering.
Om du har samma antal nollor i bråkdelen av alla dina värden, använd TRUNC()
fungera. Det krävs två argument:värdet/kolumnnamnet som innehåller talet och ett heltal som anger det önskade antalet bråksiffror; resten skärs. Titta på samma exempel med olika värden i kolumnen width
:
id | namn | bredd |
---|---|---|
1 | Large Satin N24 | 1 200 |
2 | Creation Yc2 | 0,500 |
3 | Tre färg 4F1 | 3 200 |
4 | Blå band LB1 | 0,100 |
Lösning 2:
Här är frågan du skulle skriva:
SELECT name, TRUNC(width,1) FROM ribbon;
Här är resultatet:
namn | new_width |
---|---|
Large Satin N24 | 1.0 |
Creation Yc2 | 0,5 |
Tre färg 4F1 | 3.2 |
Blå band LB1 | 0.1 |
Endast en siffra visas i decimaldelen. Observera att TRUNC() skär alla siffror, inte bara nollor.