PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przekonwertować ciąg na wartość liczbową w PostgreSQL

Problem:

Chcesz przekonwertować ciąg na wartość dziesiętną w PostgreSQL.

Skonwertujmy wartość w ciągu na typ danych DECIMAL.

Rozwiązanie 1:

Użyjemy operatora ::. Oto zapytanie, które napiszesz:

SELECT ' 5800.79 '::DECIMAL;

Oto wynik:

numeryczny
5800,79

Jak zauważyłeś, spacje wiodące i końcowe zostały usunięte.

Dyskusja:

Użyj operatora ::, aby przekonwertować ciągi zawierające wartości liczbowe na typ danych DECIMAL. W naszym przykładzie przekonwertowaliśmy ciąg „ 5800.79 ” na 5800.79 (wartość DECIMAL).

Ten operator służy do konwersji między różnymi typami danych. Jest bardzo popularny w PostgreSQL. Możesz także użyć standardowego operatora SQL, CAST() , zamiast :: operator.

Rozwiązanie 2:

SELECT CAST(' 5800.79 ' AS DECIMAL );

Oto wynik:

numeryczny
5800,79

Zauważ, że CAST() , jak :: operatora, usuwa dodatkowe spacje na początku i na końcu ciągu przed konwersją na liczbę.

Baza danych PostgreSQL zapewnia jeszcze jeden sposób konwersji. Użyj TO_NUMBER() funkcja, jeśli potrzebujesz przekonwertować bardziej skomplikowane ciągi. Ta funkcja przyjmuje dwa argumenty:ciąg do przekonwertowania i maskę formatu, która wskazuje, jak każdy znak w ciągu powinien być interpretowany. Zobacz poniższy przykład:

Rozwiązanie 3:

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

Oto wynik:

numeryczny
-5800.79

Ciąg formatu opisuje ciąg zawierający liczbę (wartość wejściowa jako ciąg). W tym przykładzie maska ​​ta zawiera symbol „FM”, który usuwa spacje wiodące i końcowe. „9” oznacza jedną cyfrę (w naszym przykładzie 5), a „G” reprezentuje grupę cyfr (w naszym przykładzie jedna spacja oznacza grupę tysięcy).

Następnie „999” oznacza jeszcze trzy cyfry (800).

Symbol „D” określa znacznik dziesiętny (tutaj kropka/kropka „.”). Po symbolu dziesiętnym pojawia się „99” lub dwie cyfry ułamkowe.

Ostatni symbol, „S”, określa użycie znaku plus lub minus (nasza liczba jest ujemna, więc otrzymuje minus).

Oto najczęściej używane symbole tej maski:

symbol opis
FM początkowe zera i spacje dopełniające
9 jedna cyfra
. lokalny przecinek dziesiętny
G separator grup
D lokalny separator dziesiętny
S znak minus lub plus
L symbol lokalnej waluty

Więcej informacji o formatowaniu liczb znajdziesz w dokumentacji PostgreSQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć jako tablicę obiektów JSON w SQL (Postgres)

  2. Jak usunąć ustaloną liczbę wierszy z sortowaniem w PostgreSQL?

  3. Nie można połączyć się z PostgreSQL za pomocą PHP pg_connect()

  4. Jak UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) w PostgreSQL?

  5. jak poprzedzić ciąg przed sekwencją wygenerowaną przez postgresql?