sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan fjerner du efterfølgende nuller fra en decimal i PostgreSQL

Problem:

Du vil gerne fjerne efterfølgende nuller fra brøkdelen af ​​et decimaltal.

Eksempel:

Vores database har en tabel med navnet ribbon med data i kolonnerne id , navn og bredde (i meter, angivet med et decimaltal med en 4-cifret brøkdel).

id navn bredde
1 Large Satin N24 1.2000
2 Creation Yc2 0,5500
3 Tre farve 4F1 3.2050
4 Blå bånd LB1 0,1265

Lad os få navnene på bånd sammen med deres bredde i meter, men uden efterfølgende nuller.

Løsning:

Vi bruger operatoren ‘::’ at konvertere decimaltallet til en RIGTIG datatype. Her er den forespørgsel, du ville skrive:

SELECT name, 
  width::REAL 
FROM ribbon;

Her er resultatet:

navn ny_bredde
Stor satin N24 1.2
Creation Yc2 0,55
Tre farve 4F1 3.205
Blå bånd LB1 0,1265

Diskussion:

Brug :: operator til at konvertere et decimaltal, der indeholder efterfølgende nuller, til et tal uden yderligere nuller. Denne operator konverterer værdien til venstre til datatypen placeret til højre.

I vores eksempel blev decimalværdien i bredden konverteret til REAL datatypen, som ikke viser efterfølgende nuller. ‘Large Satin N24’-båndet har en width værdi på 1.2000 - men vi behøver ikke nuller i brøkdelen af ​​dette tal. Derfor konverterede vi til REAL datatypen for at klippe dem (i vores eksempel blev tre nuller fjernet). Det er en bekvem måde at vise tallet på, fordi det kun fjerner de efterfølgende nuller; for eksempel har 'Blue Ribbon LB1' ikke nogen efterfølgende nuller efter decimalkommaet, så dens værdi forbliver den samme efter konvertering.

Hvis du har det samme antal nuller i brøkdelen af ​​alle dine værdier, skal du bruge TRUNC() fungere. Det kræver to argumenter:værdien/kolonnenavnet, der indeholder tallet og et heltal, der angiver det ønskede antal brøkcifre; resten skæres. Se på det samme eksempel med forskellige værdier i kolonnen width :

id navn bredde
1 Large Satin N24 1.200
2 Creation Yc2 0,500
3 Tre farve 4F1 3.200
4 Blå bånd LB1 0,100

Løsning 2:

Her er den forespørgsel, du ville skrive:

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

Her er resultatet:

navn ny_bredde
Stor satin N24 1.0
Creation Yc2 0,5
Tre farve 4F1 3.2
Blå bånd LB1 0,1

Kun ét ciffer vises i decimaldelen. Bemærk, at TRUNC() skærer alle cifre, ikke kun nuller.


  1. Importer data til en MySQL-database

  2. Sådan opretter du forbindelse til en MySQL-datakilde i Visual Studio

  3. Hent datatype af felt i select statement i ORACLE

  4. Begrænsning defineret UDSKYLDIG Umiddelbart er stadig UDSAT?