【问题标题】:Find any letter in a string SQL Server 2008 R2查找字符串中的任何字母 SQL Server 2008 R2
【发布时间】:2013-04-18 02:48:31
【问题描述】:

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

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]。

有人做过这样的事吗?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008-r2 substring


    【解决方案1】:
    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) 
    

    【讨论】:

    • 理查德这是很棒的东西。我已经将它扩展为一个我什至认为不可能的新配置。这段代码很容易适应。非常感谢!
    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2015-02-15
      相关资源
      最近更新 更多