0

我有一个包含数字和字母组合的字符串。它看起来像 1A 、 10C 、 15A 等。我有一个 case 语句,它根据数字和字母组合对这个数字应用一个相对值。该声明如下所示:

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

这在页码部分小于 10 时(如 1A)非常有效,但当您查看 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) 

ETC

于 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 回答