2013-04-18 6 views
0

숫자와 문자 조합이 포함 된 문자열이 있습니다. 이 1A, 10C, 15A 등처럼 보일 것입니다. 숫자와 문자 조합을 기준으로이 숫자에 상대 값을 적용하는 case 문이 있습니다. 성명은 다음과 같습니다 : 페이지 번호 부분 (1A)의 경우처럼 10 미만입니다하지만 당신은 10C 및 15A 볼 때, 그들은 각각 10.02과 15.01을해야 할 때이 위대한 작품을문자열의 문자 찾기 SQL Server 2008 R2

When [Page] like '%[A-Z]' then left([Page],1)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01) 

. 기본적으로 charindex를 사용하여 왼쪽 길이 요소에서 [A-Z]를 찾고 싶습니다.

누구나 이런 식으로 일 했습니까?

답변

2
When [Page] like '[0-9][A-Z]' then left([Page],1)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01) 
When [Page] like '[0-9][0-9][A-Z]' then left([Page],2)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01) 
When [Page] like '[0-9][0-9][0-9][A-Z]' then left([Page],3)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01) 

+0

리처드이 우수한 물건을보십시오. 나는 그것이 가능하다고 생각조차하지 않은 새로운 구성을 위해 그것을 확장했다. 이 코드는 쉽게 적용 할 수 있습니다. 정말 고마워! –

1

When PATINDEX('%[A-Z]%', [Page]) > 0 
then left([Page],PATINDEX('%[A-Z]%', [Page])-1)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01)