首页 > 解决方案 > 用于替换字符串并将字符串的其余部分转换为 Int 的 SQL 查询

问题描述

我有以下查询。该查询应该使用我的 where 参数查看我的帐户表。这将返回所有以前导 3 个字母“DAG”开头的帐户代码。数据返回始终采用以三个字母后跟一个数字开头的格式。然后我想获得最大的数字。为此,我通过将字符串转换为 Int 来排序字符串。

我得到以下错误:

消息 207,级别 16,状态 1,第 24 行
无效的列名称“AccountCodeWithoutDAG”。

这是我的 SQL 查询。

SELECT TOP 1 
    REPLACE(AccountCode, 'DAG', '') AS AccountCodeWithoutDAG 
FROM 
    Accounts 
WHERE
    MangCode = 'ADFG'  
ORDER BY
    CONVERT(INT, AccountCodeWithoutDAG)

我究竟做错了什么?

标签: sqlsql-server

解决方案


您不能order byconvert别名一起使用

但是您可以尝试使用子查询来AccountCodeWithoutDAG获取order by

SELECT  TOP 1 AccountCodeWithoutDAG 
FROM 
(
    SELECT REPLACE(AccountCode,'DAG','') AS AccountCodeWithoutDAG
    FROM Accounts 
    where  MangCode = 'ADFG'  
) t1
Order by  Convert(int, AccountCodeWithoutDAG )

推荐阅读