0

数字と文字の組み合わせを含む文字列があります。この 1A 、 10C 、 15A などのようになります。数字と文字の組み合わせに基づいて、この数字に相対値を適用する case ステートメントがあります。ステートメントは次のようになります。

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

これは、1A の場合のようにページ番号部分が 10 未満の場合にうまく機能しますが、10C と 15A を見ると、それぞれ 10.02 と 15.01 になるはずです。基本的に、charindex を使用して、左の長さの係数で [AZ] を見つけたいと考えています。

誰かがこのようなことをしましたか?

4

2 に答える 2

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) 

于 2013-04-18T03:41:47.793 に答える
1

これを試して

When PATINDEX('%[A-Z]%', [Page]) > 0 
then left([Page],PATINDEX('%[A-Z]%', [Page])-1)+((ASCII(convert(varchar,(RIGHT([Page],1))))-64)*.01)
于 2013-04-18T03:59:40.100 に答える