一个函数解决SQLServer中bigint 转 int带符号时报错问题
有一个需求是要在一个云监控的状态值中存储多个状态(包括可同时存在的各种异常、警告状态)使用了位运算机制在一个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
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 一个函数解决SQLServer中bigint 转 int带符号时报错问题
相关文章
- SqlServer提示“列前缀tempdb.无效: 未指定表名”问题解决方案
- 优化解决SQLServer性能瓶颈:一步一步优化(sqlserver瓶颈)
- 深入浅出:SQL Server 时间比较实践(sqlserver时间比较)
- SQLServer帮你轻松解决数据问题(SQLServer助手)
- 比较SQL Server与MySQL的有别(sqlserver和mysql)
- SQLServer是如何发音的?(sqlserver读音)
- “深入探讨SQLServer事物:保证数据完整性的重要性与实现方式”(sqlserver事物)
- 本地SQLServer:一种可靠的数据库解决方案(本地sqlserver)
- 连接SQL Server踩坑:解决未能连接上的问题(未连接sqlserver)
- 精通SQLServer:张亮成功之路(张亮sqlserver)
- 利用帆软驾驭SQL Server 解决数据分析问题(帆软和sqlserver)
- 快速学会:PHP连接SQLServer数据库(php连接sqlserver数据库)
- 在SQLServer中实现事务处理的流程(事务 sqlserver)
- 解决SQL Server错误2: 必须解决的重要问题(sqlserver错误2)
- 管理SQLServer资料库,精准掌握数据(sqlserver资料库)
- SQL Server自查——解决数据库问题的最佳工具(sqlserver诊断)
- 联查利用SQLServer解决表联查问题(sqlserver 解表)
- 解决SQL Server安装问题(sqlserver装不了)
- SQLServer之表:存储数据最核心部分(sqlserver ?表)
- SQLserver硬件技术让你快速安全轻松构建!(sqlserver 硬件)
- 认清SQLserver中空值的概念(sqlserver的判空)
- 访问解决SQL Server无权限访问问题(sqlserver无权限)
- 从零起步:学习SQLServer慕课(sqlserver慕课)
- 查询利用SQL Server精准快速解决慢查询问题(sqlserver 慢)
- 复制解决SQLServer异地复制的最佳实践(sqlserver异地)
- 不会配置SQLServer?好麻烦!(sqlserver好麻烦)
- 求解:SQL Server中处理多条值问题(sqlserver多条值)
- 格SQL Server去尾空格:解决字符串末尾空格问题(sqlserver去尾空)
- SQL Server卡慢:如何解决优化问题?(sqlserver 卡慢)
- SQL Server三范式:解决数据库冗余问题(sqlserver三范式)
- 解决SQLServer数据库损坏灾难:恢复数据库(sqlserver数据库恢复)