这是我的查询顺序:
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)
。
BarCode = 178625624324,
ExternelBarCode = 2015591149641227565492
我该如何解决这个问题?
值2,015,591,149,641,227,565,492大于bigint
2 ^ 63-1(9,223,372,036,854,775,807)中允许的最大值,因此无法进行转换。
如果需要返回数字值,可以将其强制转换为 decimal(38,0)
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句