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

Sådan konverteres en streng til en numerisk værdi i PostgreSQL

Problem:

Du vil gerne konvertere en streng til en decimalværdi i PostgreSQL.

Lad os konvertere værdien i en streng til en DECIMAL datatype.

Løsning 1:

Vi bruger operatoren ::. Her er den forespørgsel, du ville skrive:

SELECT ' 5800.79 '::DECIMAL;

Her er resultatet:

numerisk
5800.79

Som du bemærker, blev de forreste og efterfølgende mellemrum fjernet.

Diskussion:

Brug operatoren ::til at konvertere strenge, der indeholder numeriske værdier, til datatypen DECIMAL. I vores eksempel konverterede vi strengen ' 5800,79 ' til 5800,79 (en DECIMAL værdi).

Denne operator bruges til at konvertere mellem forskellige datatyper. Det er meget populært i PostgreSQL. Du kan også bruge standard SQL-operatoren, CAST() , i stedet for :: operatør.

Løsning 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Her er resultatet:

numerisk
5800.79

Bemærk, at CAST() , ligesom :: operator, fjerner yderligere mellemrum i begyndelsen og slutningen af ​​strengen, før den konverteres til et tal.

PostgreSQL-databasen giver endnu en måde at konvertere på. Brug TO_NUMBER() funktion, hvis du skal konvertere mere komplicerede strenge. Denne funktion tager to argumenter:strengen, der skal konverteres, og formatmasken, der angiver, hvordan hvert tegn i strengen skal fortolkes. Se eksemplet nedenfor:

Løsning 3:

SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );

Her er resultatet:

numerisk
-5800.79

Formatstrengen beskriver strengen, der indeholder nummeret (inputværdi som streng). I dette eksempel indeholder denne maske symbolet 'FM', som fjerner forreste og efterfølgende mellemrum. '9' angiver et ciffer (i vores eksempel 5) og 'G' repræsenterer en gruppe af cifre (i vores eksempel angiver et mellemrum en gruppe på tusinder).

Dernæst angiver '999' yderligere tre cifre (800).

'D'-symbolet angiver en decimalmarkør (her et punkt/prik '.'). Efter decimalsymbolet kommer '99', eller to brøkcifre.

Det sidste symbol, 'S', angiver brugen af ​​et plus- eller minustegn (vores tal er negativt, så det får et minus).

Her er de mest brugte symboler til denne maske:

symbol beskrivelse
FM førende nuller og udfyldningsblanketter
9 et ciffer
. lokalt decimaltegn
G gruppeseparator
D lokal decimalseparator
S minus- eller plustegn
L symbol for lokal valuta

Du kan finde mere information om numerisk formatering i PostgreSQL-dokumentationen.


  1. SQL:søg efter en streng i hver varchar-kolonne i en database

  2. Sådan bruges LIKE i SQL

  3. Oversigt over T-SQL PRINT-erklæring

  4. 3 måder at finde positionen af ​​en understreng i en streng i MySQL