T-SQL将尾随数字设置为零

时间:2017-07-05 11:46:20

标签: sql sql-server tsql

我正在研究SQL Server 2014上的存储过程。

我有一个变量:

DECLARE @VersionNumber DECIMAL(18,1);

此VersionNumber可以包含1.0或1.4等值。

在我的逻辑中,如果有次要更改 +0.1 ,如果有,则增加 +1 重大改变

如果有重大变化,我想将结尾数字重置为0.

示例:版本1.4应在重大更改后变为2.0

我当前的查询如下所示:

IF @IsMajor = 'true'
BEGIN
    SELECT @VersionNumber = COALESCE(1 + MAX([VersionNumber]), 1)
    FROM [MySchema].[Project]
END
IF @IsMajor = 'false'
BEGIN
    SELECT @VersionNumber = COALESCE(0.1 + MAX([VersionNumber]), 1)
    FROM [MySchema].[Project]
END

您知道如何将十进制数的尾随数重置为0吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

使用FLOOR

IF @IsMajor = 'true'
BEGIN
    SELECT @VersionNumber = FLOOR(COALESCE(1 + MAX([VersionNumber]), 1))
    FROM [MySchema].[Project]
END
IF @IsMajor = 'false'
BEGIN
    SELECT @VersionNumber = COALESCE(0.1 + MAX([VersionNumber]), 1)
    FROM [MySchema].[Project]
END

答案 1 :(得分:0)

您可以先将MAX(VersionNumber)投射到int。这将截断十进制数字。如果您将其转换回decimal(18,1),则可以添加1:

SELECT COALESCE(1 + CONVERT(DECIMAL(18, 1), CONVERT(INT, MAX([VersionNumber]))), 1)

答案 2 :(得分:0)

或上限

IF @IsMajor = 'true'
BEGIN
    SELECT @VersionNumber = ceiling(MAX([VersionNumber])+.1)
    FROM [MySchema].[Project]