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






С помощью 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)
В Oracle вы можете указать параметр формата для функции to_char:
TO_CHAR (1234, '9,999') -> 1,234
Для SQL Server вы можете отформатировать число как деньги, а затем удалить три крайних правых символа.
replace(convert (varchar, convert (money, 109999), 1), '.00','')
Есть ли конкретная причина, по которой вы хотите, чтобы это было сделано на стороне сервера? Похоже, эта задача лучше подходит для клиента / отчета.
В противном случае вы сохранение числа в виде строки просто для того, чтобы вы могли сохранить форматирование так, как хотите, - но вы просто потеряли возможность выполнять с ним даже базовые арифметические операции без необходимости преобразовывать его в число.
Если вы действительно полны решимости сделать это в SQL и имеете для этого уважительную причину, я полагаю, что я голосую за метод Скотта: Value -> Money -> Varchar -> Обрезать десятичную часть
- Кевин Фэирчайлд