Форматирование чисел SQL - PullRequest
       13

Форматирование чисел SQL

2 голосов
/ 03 сентября 2008

Я хочу использовать SQL для форматирования числа с запятыми в тысячах, но без десятичного числа (поэтому не могу использовать деньги) - есть предложения?

Я использую SQL Server 2005, но не стесняйтесь отвечать и за других (например, MySQL)

Ответы [ 5 ]

4 голосов
/ 03 сентября 2008

С помощью TSQL вы можете разыграть деньги и конвертировать, добавив .00, но вы можете использовать замену или подстроку для удаления.

replace(convert(varchar, cast(column as money), 1), '.00', '')

В SQL 2005 вы также можете использовать функцию CLR

[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString FormatNumber(SqlInt32 number)
{
    return number.Value.ToString("N0");
}

и вызовите ее как любую другую пользовательскую функцию

SELECT dbo.FormatNumber(value)
2 голосов
/ 03 сентября 2008

По какой-то конкретной причине вы хотите, чтобы это было сделано на стороне сервера? Похоже, что эта задача лучше подходит для клиента / отчета.

В противном случае, вы сохраняете число в виде строки , просто чтобы вы могли сохранить форматирование так, как вам хочется, - но вы просто потеряли способность выполнять даже базовую арифметику с ним без необходимости его преобразования на номер.

Если вы действительно намерены сделать это в SQL и у вас есть для этого уважительная причина, я думаю, что мой голос за метод Скотта: Значение -> Деньги -> Varchar -> Обрезать десятичную часть

- Кевин Фэйрчайлд

2 голосов
/ 03 сентября 2008

В Oracle вы можете указать параметр формата для функции to_char:
TO_CHAR (1234, '9,999') -> 1,234

2 голосов
/ 03 сентября 2008

В MySQL, функция FORMAT() сделает свое дело.

0 голосов
/ 03 сентября 2008

Для SQL Server вы можете отформатировать число как деньги и затем удалить самые правые три символа.

replace(convert (varchar, convert (money, 109999), 1), '.00','')
...