鉴于约束的只使用T-Sql在Sql服务器2005年,是否有更好的方法,以消除小数点从一个资金数据类型的比转换到一个varchar(在这里隐含的),然后进行替换的小数点?

这里是我有什么目前。

SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')

其返回所需的123和1999年,但我想知道如果有一个更好的办法。任何想法?

有帮助吗?

解决方案

再乘以100,然后转换为一个int.

其他提示

你应该永远不会使用的金钱的数据类型存储货币价值。如果你做任何计算的,你会得到截结果。运行以下看什么我的意思是

DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)

SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000

SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3

SELECT @mon4 AS moneyresult,
@num4 AS numericresult

输出:2949.0000 2949.8525

你能不能更具体一点有关的使用情况?除去小数点从表象是有点不同寻常的因为你会失去所有信息有关的规模。你是假定总是会有两个数字?如果是这样,你可以简化乘以100,然后轮换之前的一串。

记得钱的数据类型可能有最多4位数字的过去的十进制。值超过两个数字可能不是预期的作为或者你原来的解决方案或x100伎俩。

这里是魔法:

DataFormatString="{0:c0}

这将消除小数位数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top