2012-09-13 4 views
0

숫자 값이있는 일부 varchar 데이터가 있고 숫자 부분 만 제거하려고합니다. 나는 이것을 다른 많은 것들을 동시에 수행하는 저장 프로 시저 (stored proc)의 일부로하고 있는데, 그래서 이것을 인라인 쿼리의 일부로하기를 희망한다.SQL 숫자가 아닌 숫자 자르기 Varchar Sybase

'1.25', '< 5 min', '2.35 minutes', '50.43 min' 

내가이 칼럼에서 얻고 싶은 것은 :이 열의

내 데이터 값 (VARCHAR에의 끝을 보여 추가 한 틱)과 같이 1.25, 5, 2.35, 50.43

내 문제는 단일 선택에서 숫자 값의 길이를 결정하는 방법 인 것 같습니다. 그래서 마지막에 문자를 제거 할 수 있습니다. 값을 선택하는 것 외에는 (내 숫자가 항상 같은 길이는 아님), 내가 무엇을 할 수 있는지 잘 모르겠습니다. 숫자 값만 원한 이유는 대상 값을 float로 변환해야하기 때문입니다.

SUBSTRING(my_data, PATINDEX('%[0-9]%', my_data), 4) 
+0

저 sybase 12, 15, 어디서나 있습니까? – Parado

답변

1

그것은 조금 복잡하지만, 그것은 당신의 예제를 작동합니다

는 여기에 내가 무엇을 시도했다입니다.

declare @val varchar(10) 
select @val='50.43 min' 
select 
    case 
    when PATINDEX('%[a-z]%',col) = 0 
     then col 
    else rtrim(SUBSTRING(col,1,PATINDEX('%[a-z]%',col)-1)) 
    end   
from 
(select SUBSTRING(@val,PATINDEX('%[0-9]%',@val),PATINDEX('%[0-9]%',@val) 
    +len(@val)+1) as col) t 

Here 당신은 문자열 함수에 대한 설명서를 찾을 수 있습니다.

+0

대단히 감사합니다. 그 이후로 데이터에서 좀 더 낯선 조건을 발견했습니다 ... –

+0

스택을주세요 :) – Parado

관련 문제