Проблем:
Искате да преобразувате низ в десетична стойност в PostgreSQL.
Нека преобразуваме стойността в низ в DECIMAL тип данни.
Решение 1:
Ще използваме оператора ::. Ето заявката, която бихте написали:
SELECT ' 5800.79 '::DECIMAL;
Ето резултата:
числово |
---|
5800,79 |
Както забелязвате, началните и крайните интервали бяха премахнати.
Дискусия:
Използвайте оператора ::, за да преобразувате низове, съдържащи числови стойности, в тип данни DECIMAL. В нашия пример преобразувахме низа „5800.79“ в 5800.79 (ДЕСИЧНА стойност).
Този оператор се използва за преобразуване между различни типове данни. Той е много популярен в PostgreSQL. Можете също да използвате стандартния SQL оператор, CAST()
, вместо ::
оператор.
Решение 2:
SELECT CAST(' 5800.79 ' AS DECIMAL );
Ето резултата:
числово |
---|
5800,79 |
Забележете, че CAST()
, като ::
оператор, премахва допълнителни интервали в началото и края на низа, преди да го преобразува в число.
Базата данни PostgreSQL предоставя още един начин за конвертиране. Използвайте TO_NUMBER()
функция, ако трябва да конвертирате по-сложни низове. Тази функция приема два аргумента:низът за преобразуване и форматната маска, която показва как трябва да се интерпретира всеки знак в низа. Вижте примера по-долу:
Решение 3:
SELECT TO_NUMBER(' 5 800,79- ', 'FM9G999D99S' );
Ето резултата:
числово |
---|
-5800,79 |
Форматният низ описва низа, съдържащ числото (входна стойност като низ). В този пример тази маска съдържа символа „FM“, който премахва началните и крайните интервали. „9“ обозначава една цифра (в нашия пример 5), а „G“ представлява група от цифри (в нашия пример един интервал показва група от хиляди).
След това „999“ показва още три цифри (800).
Символът „D“ указва десетичен маркер (тук точка/точка „.“). След десетичния символ идва „99“ или две дробни цифри.
Последният символ, „S“, указва използването на знак плюс или минус (нашето число е отрицателно, така че получава минус).
Ето най-използваните символи за тази маска:
символ | описание |
---|---|
FM | водещи нули и празни полета |
9 | една цифра |
. | местна десетична запетая |
G | разделител на групи |
D | локален десетичен разделител |
S | знак минус или плюс |
L | символ за местна валута |
Можете да намерите повече информация за цифрово форматиране в документацията на PostgreSQL.