Как отформатировать int в ценовой формат в SQL? - PullRequest
3 голосов
/ 18 октября 2011

Я выбираю цену 1000000, и мне нужно отформатировать ее до 1 000 000 долларов. Как я могу сделать это в SQL?

Ответы [ 4 ]

3 голосов
/ 18 октября 2011

Для форматирования с запятыми вы можете использовать CONVERT со стилем 1:

declare @money money = 1000000

select '$' + convert(varchar, @money, 1)

будет производить $1,000,000.00

Если вы хотите удалить последние 3 символа:

select '$' + left(convert(varchar, @money, 1), charindex('.', convert(varchar, @money, 1)) - 1)

и если вы хотите округлить, а не усечь:

select '$' + left(convert(varchar, @money + $0.50, 1), charindex('.', convert(varchar, @money, 1)) - 1)
1 голос
/ 26 февраля 2014

Функция создания:

CREATE FUNCTION [dbo].[f_FormatMoneyValue]
(
    @MoneyValue   money
)
RETURNS VARCHAR(50)
AS

BEGIN
    RETURN cast(@MoneyValue as numeric(36,2))
END

Использование в выбранном запросе:

Select dbo.f_FormatMoneyValue(isnull(SalesPrice,0))SalesPrice from SalesOrder

Выход:

100,00

Форматирование денежного значения со знаком «$»:

CREATE FUNCTION [dbo].[f_FormatMoneyWithDollar]
(
    @MoneyValue  money
)
RETURNS VARCHAR(50)
AS

BEGIN
   RETURN '$' + convert(varchar, @MoneyValue, 1)
END

Выход:

$ 100,00

Примечание: Приведенный выше пример предназначен для денежного поля. Вы можете изменить эту функцию в соответствии с вашими потребностями Надеюсь, это поможет вам! : D

0 голосов
/ 18 октября 2011

Однако это зависит от простого способа сделать это в стандартных спецификациях SQL (SQL-92, SQL-2003 и т. Д.).

Для PostgreSQL PL / pgSQL и Oracle PL / SQL вамможно использовать to_char для форматирования чисел:

select to_char(1234567.123, 'FM$999,999,999.99')

Что дает вывод:

$1,234,567.12

См .: http://www.postgresql.org/docs/7/static/functions2976.htm

0 голосов
/ 18 октября 2011

Тип данных SQL Server только десятичный (10, 4).Насколько мне известно, нет типа данных, который будет отображать то, что вы хотите.

Добавление знака доллара и запятых - это то, что должно принадлежать логике приложения, но если вам действительно нужно сделать это через объект базы данных, рассмотрите возможность добавлениязнак доллара и запятые каждые три символа (после десятичной точки).Другими словами, вам придется конвертировать int в varchar и выполнять манипуляции со строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...