-1

我需要转换并乘以字符串的最后两位数字。

我怎样才能做到这一点?

我的公式是 (x * 60) / 100

DECLARE @find varchar(30)
SET @find = '16,81'
SELECT @find

我需要的值为 16,48

4

5 回答 5

1

我想这是为了将小数小时转换为小时和分钟?

获取最后两个字符,将其转换为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

于 2013-04-30T14:04:11.513 回答
0

你在找这个吗?

select cast(right(@find, 2) as int)*60/100
于 2013-04-30T14:13:29.260 回答
0
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上的演示

于 2013-04-30T14:17:47.513 回答
0

这是假设正确值始终为 2 个字符的一种方法。如果没有,您可以找到逗号(假设总是有一个逗号)并使用它而不是“2”:

DECLARE @find varchar(30)
SET @find = '16,81'

SELECT left(@find, len(@find) - 2) + convert(varchar(2), (right(@find, 2) * 60) / 100)

SQL 小提琴演示

假设您可能有超过 2 位数字,请使用CHARINDEX来查找逗号:

SELECT left(@find, charindex(',',@find)) + convert(varchar(100), (right(@find, len(@find) - charindex(',',@find)) * 60) / 100)
于 2013-04-30T14:01:20.980 回答
0
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)
于 2013-04-30T14:02:01.887 回答