将最后两位数相乘

时间:2013-04-30 13:57:10

标签: sql sql-server-2008 sql-server-2005

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

我该怎么做?

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

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

我需要的价值是16,48

5 个答案:

答案 0 :(得分: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。像16,15这样的输入会给出结果16,09

答案 1 :(得分: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 Fiddle Demo

假设您的姓氏可以超过2位,请使用CHARINDEX查找逗号:

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

答案 2 :(得分: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)

答案 3 :(得分:0)

你在找这个吗?

select cast(right(@find, 2) as int)*60/100

答案 4 :(得分: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上的演示