的另一種方法:
1)十進制轉換爲字符串;
2)將字符串拆分爲2部分,將最後4個字符與字符串其餘部分分開;
3)刪除最後4個字符的尾部零;
4)將兩部分連接在一起。
WITH data (V) AS (SELECT CAST(9.786534 AS decimal(18,6))
UNION ALL
SELECT CAST(9.78653 AS decimal(18,6))
UNION ALL
SELECT CAST(9.7800 AS decimal(18,6))
UNION ALL
SELECT CAST(9.7 AS decimal(18,6))
UNION ALL
SELECT CAST(9.00000 AS decimal(18,6))
)
, AsString (V) AS (SELECT CAST(V AS varchar) FROM data)
, Split (L, R) AS (SELECT LEFT(V, LEN(V) - 4), RIGHT(V, 4) FROM AsString)
, Adjusted AS (SELECT L,
REPLACE(RTRIM(REPLACE(R, '0', ' ')), ' ', '0') AS R
FROM Split)
SELECT Result = L + R FROM Adjusted
以上腳本的輸出是:
Result
--------
9.786534
9.78653
9.78
9.70
9.00
所以你的意思是,如果你有9.234000那麼它必須返回3位小數,即9.234? – Marshal 2012-04-27 05:29:07
[刪除SQL Server中十進制的尾隨零]可能的重複(http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server) – Farside 2016-05-03 14:10:32