Документация по PostgreSQL 8.4.2 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 8. Типы данных | Fast Forward | Next |
Тип money хранит значения валюты с фиксированной дробной частью; см. Table 8-3. Точность дробной части определяется настройкой СУБД lc_monetary. Ввод значений допускается в нескольких разных форматах, включая целые числа и числа с плавающей точкой, также как и значения в типичном для валюты формате, такие как '$1,000.00'. Вывод значений обычно осуществляется в последней форме, но зависит от локали. Числовые значения без кавычек могут быть сконвертированы в тип money с помощью приведения числового значения к типу text, а затем к типу money, например:
SELECT 1234::text::money;
Не существует простого способа выполнить обратное преобразование
независимым от локали манером именованного приведённого значение
типа money в какой-либо числовой тип. Если вы знаете
какой символ валюты и разделитель тысяч используются, вы можете
использовать regexp_replace()
:
SELECT regexp_replace('52093.89'::money::text, '[$,]', '', 'g')::numeric;
Поскольку вывод значений этого типа данных зависит от локали, загрузка данных типа money из одной в базу данных может не работать, если базы данных имеют разные настройки lc_monetary. Чтобы избежать проблем, перед восстановлением дампа в новую базу данных, убедитесь, что значение настроек lc_monetary такое же или эквивалентно значению в той базе данных, где выполнялся данный дамп.