SQL Server - 将数据类型 nvarchar 转换为 bigint 时出错

Luk*_*sák 2 sql sql-server

当我运行以下查询时,SELECT *我收到错误消息:

[S0005][8114] 将数据类型 nvarchar 转换为 bigint 时出错。

SELECT * FROM (
                SELECT * , ROW_NUMBER() OVER (ORDER BY CAST(id as BIGINT)) AS RowNum
                FROM users
            ) AS users
            WHERE users.RowNum BETWEEN 0 AND 5 ;
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,SELECT id , ROW_NUMBER() ...一切正常。

我的数据库看起来像这样:

数据库图片

此查询与id列所在的其他表运行良好NVARCHAR

ID 列仅是数字,如果我将其转换为:CAST(id as NVARCHAR),则会出现相同的错误。

编辑:

我发现列 ID 值有问题

身份证 46903836 身份证 9100000004

小 ID 没有前导零

Wes*_*mer 6

通常,当我收到此错误时,是因为列的前端或末尾有空格。这是我修复它的方法。

SELECT * FROM (
            SELECT * , ROW_NUMBER() OVER (ORDER BY CAST(LTRIM(RTRIM(id)) as BIGINT)) AS RowNum
            FROM users
        ) AS users
        WHERE users.RowNum BETWEEN 0 AND 5 ;
Run Code Online (Sandbox Code Playgroud)

这将确保 ID 只是数字,我还假设 ID 没有任何字母字符。