Search code examples
sql-servert-sqlsql-server-2005type-conversioncurrency

Show comma instead of point as decimal separator


I just want to get the right number format here in germany, so i need to show commas as decimal separator instead of points. But this...

DECLARE @euros money
SET @euros = 1025040.2365
SELECT CONVERT(varchar(30), @euros, 1)

Displays 1,025,040.24 instead of 1.025.040,24 (or 1025040,24). In C# it would be simple to provide the appropriate CultureInfo but how to do it in T-SQL?

Do i really need to use REPLACE? But even if, how to replace 1,025,040.24 correctly?


Solution

  • Well, as far as I know, there are no culture-specific options for convert available.

    So you can do it using replaces (yes, it looks a bit ugly...)

    select 
        replace(replace(replace(convert(varchar(30), @euros, 1), ',', '|'), '.', ','), '|', '.')
    

    Idea: first change comma to something, then change dot to comma, and then "something" back to dot.