2013-07-10 2 views

답변

1

접근 : 접근에 대한

Here is SQLFiddel Demo

select Convert(varchar(3),convert(numeric(5,1),(2.3434453433))) 

솔루션 :

UPDATE Customer 
    set Distance= Convert(varchar(3),Convert(Numeric(5,1), 
        CAST(CAST(REPLACE(REPLACE(distance, 'km' , ''), 
        'miles', '')as float) * 1.3 * 0.62137 AS NVARCHAR))) + 'Miles' 
+0

데이터 유형 varchar를 숫자로 변환하는 중 오류가 발생합니다. – NoviceToDotNet

+0

테이블에'distance' 값을 줄 수 있습니까? – Romesh

+1

'numeric (2,1)'을'numeric (10,1)'으로 변경할 수 있습니다. 정수 부분은 2 자리 인 경우 다음이 – Romesh

1

당신은 당신이 경우 라운드 값을 라운드 기능을 사용할 수 있습니다

UPDATE Customer set Distance= 
    CAST(round(CAST(REPLACE(REPLACE(distance, 'km' , ''), 'miles', '')as float) * 1.3 * 0.62137,1) AS NVARCHAR) 
    + 'Miles' FROM customer 
1
SELECT 
CAST(CAST(CAST(REPLACE(REPLACE(distance, 'km' , ''), 'miles', '')as float) * 1.3 * 0.62137 AS DECIMAL(19,1)) AS NVARCHAR) 
+ 'Miles' FROM customer 
1

그냥 저장 문자열로 값을 원하는 대신 왜 그것은 나에게 명확하지 않다 출력시 서식을 지정합니다.

표현식이 약간 혼란스럽고 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() function은 주어진 길이와 정밀도로 지정된 문자열 형식으로 숫자를 변환 : 난 당신이 뭔가를하려는 생각합니다.

그러나 실제로는 Customer 테이블에 거리, 단위 및 다른 두 값을 결합한 계산 열인 "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) 
관련 문제