You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中nvarchar转bigint报错,如何排除非数值型S_id?

解决SQL Server中NVARCHAR转bigint的类型转换错误及过滤无效值问题

一、避免转换错误的方法

如果不需要过滤无效值,只是想让转换语句不报错,可以用以下两种方式:

  1. 使用TRY_CONVERT函数(推荐,SQL Server 2012及以上版本支持)
    这个函数在转换失败时会返回NULL,而非抛出错误,完美适配你的场景:
SELECT TRY_CONVERT(bigint, S_id) AS S_id_num
FROM 你的表名
  1. 低版本SQL Server兼容方案(2012以下)
    结合CASE和严格的字符匹配逻辑实现安全转换,确保只处理纯整数格式的字符串:
SELECT 
    CASE 
        WHEN S_id LIKE '[0-9]%' AND S_id NOT LIKE '%[^0-9]%'
        THEN CONVERT(bigint, S_id)
        ELSE NULL
    END AS S_id_num
FROM 你的表名

注:这里用LIKE匹配纯数字字符,比ISNUMERIC更严格——ISNUMERIC会把带小数点、正负号甚至科学计数法的字符串判定为数值,如果你不需要这些情况,上述LIKE判断的准确性更高。

二、在SELECT语句中排除无效值

如果只需要查询能正常转换为bigint的记录,可以直接过滤掉转换失败的行:

  1. 高版本(2012+)简洁写法
    利用TRY_CONVERT返回NULL的特性过滤:
SELECT S_id, TRY_CONVERT(bigint, S_id) AS S_id_num
FROM 你的表名
WHERE TRY_CONVERT(bigint, S_id) IS NOT NULL
  1. 低版本兼容写法
    用纯数字匹配条件过滤:
SELECT S_id, CONVERT(bigint, S_id) AS S_id_num
FROM 你的表名
WHERE S_id LIKE '[0-9]%' AND S_id NOT LIKE '%[^0-9]%'

内容的提问来源于stack exchange,提问作者Sca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:05:59