Probleem:
U wilt een tekenreeks converteren naar een decimale waarde in PostgreSQL.
Laten we de waarde in een string converteren naar een DECIMAAL datatype.
Oplossing 1:
We gebruiken de ::operator. Dit is de vraag die je zou schrijven:
SELECT ' 5800.79 '::DECIMAL;
Hier is het resultaat:
numeriek |
---|
5800.79 |
Zoals je ziet, zijn de voorloop- en volgspaties verwijderd.
Discussie:
Gebruik de operator ::om tekenreeksen met numerieke waarden om te zetten naar het gegevenstype DECIMAL. In ons voorbeeld hebben we de tekenreeks ' 5800.79 ' geconverteerd naar 5800.79 (een DECIMALE waarde).
Deze operator wordt gebruikt om te converteren tussen verschillende gegevenstypen. Het is erg populair binnen PostgreSQL. U kunt ook de standaard SQL-operator gebruiken, CAST()
, in plaats van de ::
exploitant.
Oplossing 2:
SELECT CAST(' 5800.79 ' AS DECIMAL );
Hier is het resultaat:
numeriek |
---|
5800.79 |
Merk op dat CAST()
, zoals de ::
operator, verwijdert extra spaties aan het begin en einde van de tekenreeks voordat deze wordt omgezet in een getal.
De PostgreSQL-database biedt nog een manier om te converteren. Gebruik de TO_NUMBER()
functie als u meer gecompliceerde strings moet converteren. Voor deze functie zijn twee argumenten nodig:de tekenreeks die moet worden geconverteerd en het formaatmasker dat aangeeft hoe elk teken in de tekenreeks moet worden geïnterpreteerd. Zie onderstaand voorbeeld:
Oplossing 3:
SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );
Hier is het resultaat:
numeriek |
---|
-5800.79 |
De format string beschrijft de string die het getal bevat (invoerwaarde als string). In dit voorbeeld bevat dit masker het symbool 'FM', waarmee voorloop- en volgspaties worden verwijderd. De '9' geeft één cijfer aan (in ons voorbeeld 5) en 'G' staat voor een groep cijfers (in ons voorbeeld geeft één spatie een groep van duizenden aan).
Vervolgens geeft '999' nog drie cijfers (800) aan.
Het 'D'-symbool geeft een decimale markering aan (hier een punt/punt '.'). Na het decimaalteken komt '99', of twee decimale cijfers.
Het laatste symbool, 'S', specificeert het gebruik van een plus- of minteken (ons getal is negatief, dus het krijgt een min).
Dit zijn de meest gebruikte symbolen voor dit masker:
symbool | beschrijving |
---|---|
FM | voorloopnullen en opvulspaties |
9 | één cijfer |
. | lokale komma |
G | groepsscheidingsteken |
D | lokaal decimaalteken |
S | min- of plusteken |
L | lokale valutasymbool |
U kunt meer informatie over numerieke opmaak vinden in de PostgreSQL-documentatie.