SQL Server - 计算两个字符之间的字符数

Hea*_*ore 0 sql t-sql sql-server sql-server-2008-r2

如何计算两个字符之间的字母数(按字母顺序a到z或z到a)?

例如:

WITH    ExampleData
          AS ( SELECT   'a' AS StartChar, 'e' AS EndChar
               UNION ALL
               SELECT   'm', 'r'
               UNION ALL
               SELECT   'f', 'a'
             )
    SELECT  StartChar ,
            EndChar
    FROM    ExampleData
Run Code Online (Sandbox Code Playgroud)

需要生产:

StartChar   EndChar    Diff
a           e          4
m           r          5
f           a          -5
Run Code Online (Sandbox Code Playgroud)

我看到如何使用udf和while循环轻松完成,但我想知道是否有更快的方法?

lc.*_*lc. 6

SELECT StartChar, EndChar, ASCII(EndChar) - ASCII(StartChar) AS Diff
FROM ExampleData
Run Code Online (Sandbox Code Playgroud)

SQL小提琴示例