Sql server SQL Server:将表达式转换为数据类型bigint时出现算术溢出错误
以下是我的查询顺序:Sql server SQL Server:将表达式转换为数据类型bigint时出现算术溢出错误,sql-server,Sql Server,以下是我的查询顺序: SELECT CASE WHEN ((BarCode IS NOT NULL) AND (ExternelBarCode IS NULL)) THEN BarCode WHEN ((BarCode IS NULL) AND (ExternelBarCode IS NOT NULL)) THEN CAST(ExternelBarCode AS bigint) ELSE ExternelBarCode -- Wh
SELECT
CASE
WHEN ((BarCode IS NOT NULL) AND (ExternelBarCode IS NULL)) THEN BarCode
WHEN ((BarCode IS NULL) AND (ExternelBarCode IS NOT NULL)) THEN CAST(ExternelBarCode AS bigint)
ELSE ExternelBarCode -- When both exist
END AS TicketBarCode
...
当我运行它时,我得到以下消息:
将表达式转换为数据类型bigint时出现算术溢出错误
列BarCode
的类型为bigint
,列ExternelBarCode
的类型为varchar(250)
如何解决此问题?值2015591149641227565492大于
bigint
2^63-1(9223372036854775807)中允许的最大值,因此无法进行转换
如果需要返回数值,可以将其转换为十进制(38,0)
尝试浮点/十进制(6,2)和cast else part,以及它试图从
ExternelBarCode
转换哪些数据?尝试使用@Szymon所说的方法
BarCode = 178625624324,
ExternelBarCode = 2015591149641227565492
SELECT
CASE
WHEN ((BarCode IS NOT NULL) AND (ExternelBarCode IS NULL)) THEN CAST(BarCode as decimal(38,0))
WHEN ((BarCode IS NULL) AND (ExternelBarCode IS NOT NULL)) THEN CAST(ExternelBarCode AS decimal(38,0))
ELSE cast(ExternelBarCode as decimal(38,0)) -- When both exist
END AS TicketBarCode