繁体   English   中英

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

[英]T-SQL set trailing numbers to zeros

我正在使用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吗?

谢谢!

使用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

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

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

或天花板

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM