sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man konverterar en sträng till ett numeriskt värde i PostgreSQL

Problem:

Du vill konvertera en sträng till ett decimalvärde i PostgreSQL.

Låt oss konvertera värdet i en sträng till en DECIMAL datatyp.

Lösning 1:

Vi använder operatorn ::. Här är frågan du skulle skriva:

SELECT ' 5800.79 '::DECIMAL;

Här är resultatet:

numerisk
5800.79

Som du märker togs de främre och efterföljande utrymmena bort.

Diskussion:

Använd operatorn ::för att konvertera strängar som innehåller numeriska värden till datatypen DECIMAL. I vårt exempel konverterade vi strängen "5800,79" till 5800,79 (ett DECIMALT värde).

Denna operator används för att konvertera mellan olika datatyper. Det är väldigt populärt inom PostgreSQL. Du kan också använda den vanliga SQL-operatorn, CAST() istället för :: operatör.

Lösning 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Här är resultatet:

numerisk
5800.79

Lägg märke till att CAST() , som :: operatorn, tar bort ytterligare mellanslag i början och slutet av strängen innan den konverteras till ett tal.

PostgreSQL-databasen ger ytterligare ett sätt att konvertera. Använd TO_NUMBER() funktion om du behöver konvertera mer komplicerade strängar. Den här funktionen tar två argument:strängen som ska konverteras och formatmasken som anger hur varje tecken i strängen ska tolkas. Se exemplet nedan:

Lösning 3:

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

Här är resultatet:

numerisk
-5800.79

Formatsträngen beskriver strängen som innehåller numret (inmatat värde som sträng). I det här exemplet innehåller den här masken symbolen "FM", som tar bort inledande och efterföljande mellanslag. "9" indikerar en siffra (i vårt exempel, 5) och "G" representerar en grupp av siffror (i vårt exempel indikerar ett mellanslag en grupp av tusentals).

Därefter indikerar "999" ytterligare tre siffror (800).

'D'-symbolen anger en decimalmarkör (här, en punkt/punkt '.'). Efter decimalsymbolen kommer "99", eller två bråksiffror.

Den sista symbolen, 'S', anger användningen av ett plus- eller minustecken (vårt tal är negativt, så det får ett minus).

Här är de mest använda symbolerna för denna mask:

symbol beskrivning
FM ledande nollor och utfyllnadsblanketter
9 en siffra
. lokal decimalkomma
G gruppseparator
D lokal decimalavgränsare
S minus- eller plustecken
L symbol för lokal valuta

Du kan hitta mer information om numerisk formatering i PostgreSQL-dokumentationen.


  1. Konfigurera Hibernate för att använda Oracles SYS_GUID() för primärnyckel

  2. ORDER BY-satsen är ogiltig i vyer, inline-funktioner, härledda tabeller, underfrågor och vanliga tabelluttryck

  3. Hur uppdaterar man en stor tabell med miljontals rader i SQL Server?

  4. Bygg en kontaktbok med Python, PyQt och SQLite