[英]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.