SQL 服务器按条款排序

SQL Server Ordery By Clause

我在 SQL 服务器 Table 中有以下格式的数据。列的数据类型是 nVarchar

(File # 1) abcde
(File # 3) abdddd
(File # 4) asdfas
(File # 7) ououoiu
(File # 6) ooiuoi
(File # 5) werwer
(File # 2) oiouoiu
(File # 10) xcvzx
(File # 11) cxzvz
(File # 20) zxcvzx and so on....

当我在上述列中使用 order by 子句时,我得到如下结果...

(File # 1) abcde
(File # 10) xcvzx
(File # 11) cxzvz
(File # 2) oiouoiu
(File # 20) zxcvzx
(File # 3) abdddd
(File # 4) asdfas
(File # 5) werwer
(File # 6) ooiuoi
(File # 7) ououoiu

如何修复....

如果格式总是相同 (file # .....) 有一个简单的解决方案:

order by charindex(')', col), col

编辑:

这会提取 第一组数字 并将其转换为 INT

ORDER BY
    CAST(CASE WHEN PATINDEX('%[0-9]%',col) > 0
              THEN SUBSTRING(SUBSTRING(col,PATINDEX('%[0-9]%',col),100), 1, PATINDEX('%[^0-9]%', SUBSTRING(col,PATINDEX('%[0-9]%',col),100)+'#')-1) 
              ELSE '0'
          END AS FLOAT)
    ,col

如果 SQL 服务器支持正则表达式会容易得多:-)