有一个需求是要在一个云监控的状态值中存储多个状态(包括可同时存在的各种异常、警告状态)使用了位运算机制在一个int型中存储。
现在监控日志数据量非常大(亿级别)需要对数据按每小时、每天进行聚合,供在线报表使用。
状态分了3个级别:正常(0)、警告(1)、异常(2),聚合时需要使用max选择最差的状态,就需要对状态值进行处理加上级别和状态位个数,就要借助bigint型来做运算了,
问题是再将bigint 转为 int时获取原始状态值时,SQLServer报错了:
消息 8115,级别 16,状态 2,第 1 行
将 expression 转换为数据类型 int 时出现算术溢出错误。
因为状态码中已经用到了 0x80000000, 出现了符号位的问题。
写了一个转换函数解决了。
CREATE FUNCTION [dbo].[BigintToInt] ( @Value bigint ) RETURNS int AS BEGIN -- 是否有int符号位 IF @Value & 0x80000000 <> 0 RETURN @Value & 0xFFFFFFFF | 0xFFFFFFFF00000000 -- 无符号位 RETURN @Value & 0xFFFFFFFF END
标签:
bigint,int,符号
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“SQLServer中bigint转int带符号时报错问题解决方法”评论...
更新动态
20240524
20240524
- 《范玮琪15CD合集》[WAV+CUE][14.8G]
- 陈慧娴《BackToPriscilla30周年演唱会2CD》[WAV+CUE]
- 【乡村音乐】约翰尼·李《七月十三日、情感》2CD.2024[FLAC+CUE]
- 【发烧唱片】丹拿示范盘《为歌所吻》2014[FLAC+CUE]
- 颜人中.2022-查无此人【中视鸣达】【FLAC分轨】
- 苏慧伦.1996-LEMON.TREE【滚石】【WAV+CUE】
- 萧福德.1995-春秋大梦【飞碟】【WAV+CUE】
- 宇多田光-TheFirstLove【Hi-Res】FLAC
- KOKIA吉田亚纪子-2009-AKIKO∞KOKIA~balance~[FLAC]
- 中国人民解放军军乐团-《28首世界军乐精品大联奏(二)》[FLAC]
- 蓝岚《天空》人声与钢琴的对话[WAV分轨][464M]
- 群星《荒野彪客DTS》中国第一试音天碟 [DTS][440M]
- 贵族音乐《颂钵减压SPA 空灵疗心音乐精选》[320K/MP3][146.49MB]
- 群星.2005-男人魅【TVB.MUSIC】【WAV+CUE】
- 谢采妘.1999-旧情绵绵2CD【南方】【WAV+CUE】