我需要转换并乘以字符串的最后两位数字。
我怎样才能做到这一点?
我的公式是 (x * 60) / 100
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT @find
我需要的值为 16,48
我需要转换并乘以字符串的最后两位数字。
我怎样才能做到这一点?
我的公式是 (x * 60) / 100
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT @find
我需要的值为 16,48
我想这是为了将小数小时转换为小时和分钟?
获取最后两个字符,将其转换为int
,进行计算,将其转换回varchar
,在前面附加一个零,然后取最后两个字符。这样结果总是两个字符,即使它小于 10:
SELECT
left(@find, 3) +
right('0' + cast(cast(right(@find, 2) as int) * 60 / 100 as varchar(2)), 2)
输入16,81
给出结果16,48
。输入 like16,15
给出结果16,09
。
你在找这个吗?
select cast(right(@find, 2) as int)*60/100
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT SUBSTRING(@find, 1, CHARINDEX(',', @find))
+ CAST((SUBSTRING(@find, CHARINDEX(',', @find) + 1, LEN(@find)) * 60) / 100 AS varchar(30))
SQLFiddle上的演示
这是假设正确值始终为 2 个字符的一种方法。如果没有,您可以找到逗号(假设总是有一个逗号)并使用它而不是“2”:
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT left(@find, len(@find) - 2) + convert(varchar(2), (right(@find, 2) * 60) / 100)
假设您可能有超过 2 位数字,请使用CHARINDEX
来查找逗号:
SELECT left(@find, charindex(',',@find)) + convert(varchar(100), (right(@find, len(@find) - charindex(',',@find)) * 60) / 100)
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT @find
SELECT SUBSTRING(@find, 0, LEN(@find)-1) + CONVERT(VARcHAR(2),CONVERT(INT,RIGHT(@find,2)) * 60 / 100)