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

SQL Server 2022转换负数值至NVARCHAR(MAX)时算术溢出错误求助

解决方案

方案1:先转NVARCHAR(4000)再转NVARCHAR(MAX)

既然非负值或用NVARCHAR(4000)能正常执行,先把数值转成NVARCHAR(4000),再显式转成NVARCHAR(MAX),绕开直接转换的bug:

SELECT CONVERT(NVARCHAR(MAX), CONVERT(NVARCHAR(4000), "VALUE", 3)) 
FROM "MY_DB"."MY_SCHEMA"."TEST"

方案2:用STR函数替代CONVERT

STR函数可直接把数值转成字符串,默认处理正负号,之后再转成NVARCHAR(MAX)即可:

SELECT CONVERT(NVARCHAR(MAX), STR("VALUE", 15, 10)) 
FROM "MY_DB"."MY_SCHEMA"."TEST"

注:STR的第一个参数15是总长度,第二个10是小数位数,可根据实际需求调整。

方案3:使用FORMAT函数格式化

FORMAT函数支持灵活的数值格式化,返回结果本身就是NVARCHAR类型,直接满足MAX的需求:

SELECT FORMAT("VALUE", '0.0000000000') 
FROM "MY_DB"."MY_SCHEMA"."TEST"

注:格式字符串'0.0000000000'对应原样式3的小数位数,可按需修改。

方案4:先CAST为DECIMAL再转NVARCHAR(MAX)

如果数值精度在DECIMAL范围内,先转成DECIMAL类型再转换,避免FLOAT转NVARCHAR的异常:

SELECT CONVERT(NVARCHAR(MAX), CAST("VALUE" AS DECIMAL(18,10)), 3) 
FROM "MY_DB"."MY_SCHEMA"."TEST"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:57:05