回答
对于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的?甲骨文? –