-1

文字列の最後の 2 桁を変換して乗算する必要があります。

これどうやってするの?

私の数式は (x * 60) / 100 です

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

必要な値は 16,48 です

4

5 に答える 5

1

端数を時間と分に変換するためだと思いますか?

最後の 2 文字を取得し、それを にキャストしint、計算を行って にキャストし直しvarchar、前にゼロを追加して、最後の 2 文字を取得します。そうすれば、たとえ 10 未満であっても、結果は常に 2 文字になります。

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ます。

于 2013-04-30T14:04:11.513 に答える
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 に答える
0

正しい値が常に 2 文字であると仮定する 1 つの方法を次に示します。そうでない場合は、コンマを見つけて(常に単一のコンマがあると仮定して)、「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

これを探していますか?

select cast(right(@find, 2) as int)*60/100
于 2013-04-30T14:13:29.260 に答える