Тип money
не имеет достаточного диапазона для чисел, используемых OP. в идеале такого рода вещи будут выполняться на уровне презентации, но OP хочет получить SQL-решение, поэтому я пошел на решение TSQL. Кто-то с лучшим TSQL, чем я, может улучшить это, но я верю, что он сделает то, что хочет OP. В идеале это было бы сделано в более общую функцию User Defined. Он не учитывает локали (некоторые европейские страны используют «.» Как разделитель тысяч и «,» как десятичную точку).
DECLARE @Price decimal(19,2)
DECLARE @PriceString varchar(20)
DECLARE @DP int
DECLARE @Decimals varchar(3)
DECLARE @ResultString varchar(25)
SELECT @Price = 123456789.89
SELECT @PriceString = CONVERT(varchar(20), @Price)
SELECT @DP = CHARINDEX('.', @PriceString)
SELECT @Decimals = SUBSTRING(@PriceString, @DP, LEN(@PriceString)[email protected]+1)
SELECT @PriceString = SUBSTRING(@PriceString, 1, @DP-1)
SELECT @PriceString = REVERSE(@PriceString)
DECLARE @ix int
SELECT @ResultString = ''
SELECT @ix = 1
WHILE @ix <= LEN(@PriceString)
BEGIN
SELECT @ResultString = SUBSTRING(@PriceString, @ix, 1) + @ResultString
if @ix %3 = 0 AND @ix <> LEN(@PriceString)
BEGIN
SELECT @ResultString = ',' + @ResultString
END
SELECT @ix = @ix +1
END
SELECT @ResultString = @ResultString + @Decimals
SELECT @ResultString
sql server 2005 –
работает отлично для меня. – Lamak
попробуйте этот SELECT '$' + convert (varchar, cast ('212323232232123.21' в качестве денег), - 1) as Цена –