2013-04-18 76 views
0

我有一个包含数字和字母组合的字符串。它看起来像1A,10C,15A等。我有一个case语句,它根据数字和字母组合将相对值应用于此数字。声明如下:查找字符串中的任何字母SQL Server 2008 R2

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在左边的长度因子中找到[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

理查德这是一个极好的东西。我已经将它扩展为一种我认为不可能的新配置。该代码很容易适应。非常感谢! – 2013-04-18 18:18:19

1

试试这个

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