Я использую SQL Server 2008, поэтому функция FORMAT недоступна. Есть ли лаконичный способ удаления начальных и конечных нулей из десятичной дроби.
Другие ответы, которые я нашел при переполнении стека, не охватывают все сценарии.
Я хочу сделать что-то вроде этого:
DECLARE @d decimal(9,6) = 12.345
SELECT removezeros(@d)
Я понимаю, что результатом будет строка.
Он должен работать во всех следующих случаях:
0.123000 -> 0.123
1.23 -> 1.23
012.003450 -> 12.00345
1.00 -> 1
2
Graham
10 Мар 2014 в 15:03
3 ответа
Лучший ответ
create table #t(id decimal(9,6))
insert into #t values(0.123000),(012.3879000),(1.23),(1.00)
select cast(id as float) from #t
ДЕМО
2
Community
20 Июн 2020 в 12:12
Это ужасно, но, похоже, работает с числами и числами. Ключ сначала преобразуется в числовое, если ваше значение является плавающим.
declare @val numeric(18,5) = 012.003450;
SELECT ISNULL(REPLACE(RTRIM(REPLACE(REPLACE(RTRIM(REPLACE(CAST(@val as nvarchar(max)),'0',' ')),' ','0'),'.',' ')),' ','.'),'');
- Приводить поплавки как числа
- Замени нули пробелами
- Правые места обрезки
- Вернуть пробелы обратно к нулям.
- Сделайте то же самое для десятичного разряда
0
Michael
5 Май 2016 в 09:58
Есть несколько способов сделать это, попробуйте это ниже.
USE AdventureWorks2012;
GO
SELECT TOP(5)CurrencyRateID, EndOfDayRate
,FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Number Format'
,FORMAT(EndOfDayRate, 'G', 'en-us') AS 'General Format'
,FORMAT(EndOfDayRate, 'C', 'en-us') AS 'Currency Format'
FROM Sales.CurrencyRate
ORDER BY CurrencyRateID;
Вот результат.
CurrencyRateID EndOfDayRate Numeric Format General Format Currency Format
-------------- ------------ -------------- -------------- ---------------
1 1.0002 1.00 1.0002 $1.00
2 1.55 1.55 1.5500 $1.55
3 1.9419 1.94 1.9419 $1.94
4 1.4683 1.47 1.4683 $1.47
5 8.2784 8.28 8.2784 $8.28
(5 row(s) affected)
Его можно найти по следующей ссылке http://msdn.microsoft.com/en-us/library/hh213505.aspx
-1
Wesley Bland
10 Мар 2014 в 20:32
2
Прочтите еще раз первую строку вопроса: «Я использую SQL Server 2008, поэтому функция FORMAT недоступна».
– jpw
10 Мар 2014 в 15:19
Похожие вопросы
Новые вопросы
sql-server-2008
Используйте этот тег для вопросов, относящихся к версии Microsoft SQL Server 2008.
0
в результате0.123000
?