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