出力時に値をフォーマットするのではなく、値を文字列として保存する理由がわかりません。
あなたの式は少し混乱しているように見えます.1.3を掛けて0.62を掛けています. 私はあなたがこのようなものが欲しいと思います:
UPDATE Customer
set Distance = (case when right(distance, 3) = ' km'
then replace(str(cast(left(distance, charindex(' ', distance) - 1),
as float)/0.62137, 6, 1), ' ', '') + 'Miles'
else distance
end)
このstr()
関数は、数値を、指定された長さと精度で指定された文字列形式に変換します。
Customer
ただし、距離、単位、および他の 2 つの値を組み合わせた計算列である "DistanceMiles" フィールドを持つようにテーブルを変更する必要があるようです。次のようになります。
DistanceMiles as (case when Units = 'Mile'
then replace(str(Distance, 6, 1), ' ', '')+' Miles'
when Units = 'km'
then replace(str(Distance/0.62137, 6, 1), ' ', '')+' Miles'
end)