回答
對於SQL Server
DECLARE @num INT = 58963;
with decList as
(
select 10 AS decNum
union all
select decNum * 10 AS dt
from decList
where decNum <= @num
)
select CASE WHEN decNum > 10
THEN ((@num % decNum)/(decNum/10)) * (decNum/10)
ELSE @num % decNum
END
from decList
這是有效的,但我們必須改變每個數字的變化 – TheGameiswar
true,我會嘗試更新 –
嘗試
DECLARE @amount INT = 58963
DECLARE @temp INT
DECLARE @i INT = 0
DECLARE @tempStore TABLE(val int)
WHILE(@amount>0)
BEGIN
SET @temp = @amount % 10;
SET @amount = @amount /10;
INSERT INTO @tempStore VALUES(@temp * POWER(10, @i))
SET @i = @i+1;
END
SELECT * FROM @tempStore ORDER BY val DESC
可以使用bigint
,而不是int
如果該值不適合在整數的範圍。
如果你想要得到的逗號分隔輸出嘗試
DECLARE @amount BIGINT = 589625
DECLARE @temp BIGINT
DECLARE @i INT = 0
DECLARE @tempStore TABLE(val BIGINT)
WHILE(@amount>0)
BEGIN
SET @temp = @amount % 10;
SET @amount = @amount /10;
INSERT INTO @tempStore VALUES(@temp * POWER(10, @i))
SET @i = @i+1;
END
DECLARE @tmp VARCHAR(MAX)= ''
select @tmp = @tmp + CONVERT(VARCHAR(100), val) + ', ' from @tempStore ORDER BY val DESC
select SUBSTRING(@tmp, 0, LEN(@tmp))
如果你想用數據庫的方式,而不是一般的編程邏輯(不想while循環中)來實現這點,你可以試試
DECLARE @amount AS INT = 58963;
;WITH cte
AS (SELECT 1 AS n, @amount AS m, 1 as p, 1 as r
UNION ALL
SELECT (cte.m%10), (cte.m/10), (cte.p*10), ((cte.m%10) * (cte.p*10))/10
FROM cte
WHERE cte.m > 0
)
SELECT cte.r --,*
FROM cte WHERE (cte.n*cte.p)/10 > 0
--ORDER BY cte.r DESC
這應該適用於任何數量。
DECLARE @amount AS INT = 58963;
WITH cte
AS (SELECT 1 AS n
UNION ALL
SELECT cte.n * 10
FROM cte
WHERE cte.n < @amount/10
)
SELECT ((@amount % (cte.n * 10))/cte.n) * cte.n
FROM cte;
您可以使用'WHERE cte.n <@amount/10'而不是'WHERE cte.n * 10 <@金額「來產生10的冪。它將確保你對整數n的情況不會溢出。 –
@NoorAShuvo好點。 –
- 1. Sql Server MAX的金額(金額)
- 2. 總額和部分金額
- 3. SQL分組和索賠金額總計
- 4. 減去資金金額在SQL
- 5. SQL GROUP BY和金額
- 6. 金額導致SQL查詢
- 7. 付款金額跟蹤sql
- 8. Teradata SQL移動金額
- 9. 總金額的更新金額
- 10. c輸入金額的最小金額
- 11. NetSuite發票金額支付金額
- 12. 無法刪除金額分解中的尾部加號
- 13. sql:找到每個分支貸款的最低金額
- 14. 用PHP SQL扣除賬單的金額
- 15. SQL查詢計算金額基於shiftno?
- 16. 從2 SQL返回單金額查詢
- 17. 使用SQL服務器計算金額
- 18. 差異超過金額在SQL
- 19. SQL查詢來計算的金額
- 20. t-sql邏輯找到收據金額
- 21. 使用嵌套金額的SQL查詢
- 22. Activerecord額外金額列
- 23. 限額複選框金額
- 24. SUMIF金額
- 25. 金額用C
- 26. 金額加總
- 27. C#2數組分割金額問題
- 28. JS從金額中劃分%折扣
- 29. java8流分組和總金額
- 30. 水晶分組金額問題
你應該做的是在你的程序邏輯,而不是在SQL –
這也可能是家庭作業,因此這可能不是一個選項。 – MSalters
您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)? Postgres的?甲骨文? –