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

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

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

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
2 020
5

Ответы 5

В MySQL функцию FORMAT() поможет.

С помощью 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 -> Обрезать десятичную часть

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

Другие вопросы по теме