这是我的查询顺序:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)