我需要转换并乘以字符串的最后两位数字。
我该怎么做?
我的公式是(x * 60)/ 100
DECLARE @find varchar(30)
SET @find = '16,81'
SELECT @find
我需要的价值是16,48
答案 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)
假设您的姓氏可以超过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上的演示