回答
对于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. 总额和部分金额
- 2. SQL分组和索赔金额总计
- 3. SQL GROUP BY和金额
- 4. 金额导致SQL查询
- 5. c输入金额的最小金额
- 6. 无法删除金额分解中的尾部加号
- 7. 使用SQL服务器计算金额
- 8. 使用嵌套金额的SQL查询
- 9. 用PHP SQL扣除账单的金额
- 10. 限额复选框金额
- 11. 金额加总
- 12. 水晶分组金额问题
- 13. C#2数组分割金额问题
- 14. 给出分项金额的公式
- 15. Rails分页 - 首页项目金额
- 16. 在X天内拆分金额
- 17. c#计算金额
- 18. Ruby:合计金额
- 19. Twitter推特金额
- 20. MIPS金额(阿迪)
- 21. 自定义“金额”
- 22. 动态金额'.parent'
- 23. 累计金额按日期
- 24. 金额返回0而不是实际金额的总和
- 25. shapeshift.io API:“缺少输出金额或存款金额”
- 26. Rails:更新贷款金额与支付金额
- 27. 用金额阈值计算佣金
- 28. 查询每个项目的金额大于100的订单总金额
- 29. 金额总额后应自动加入
- 30. 根据交易金额为数据分配分数
你应该做的是在你的程序逻辑,而不是在SQL –
这也可能是家庭作业,因此这可能不是一个选项。 – MSalters
您正在使用哪个[DBMS](https://en.wikipedia.org/wiki/DBMS)? Postgres的?甲骨文? –