SQLServer中bigint轉(zhuǎn)int帶符號(hào)時(shí)報(bào)錯(cuò)問(wèn)題解決方法
有一個(gè)需求是要在一個(gè)云監(jiān)控的狀態(tài)值中存儲(chǔ)多個(gè)狀態(tài)(包括可同時(shí)存在的各種異常、警告狀態(tài))使用了位運(yùn)算機(jī)制在一個(gè)int型中存儲(chǔ)。
現(xiàn)在監(jiān)控日志數(shù)據(jù)量非常大(億級(jí)別)需要對(duì)數(shù)據(jù)按每小時(shí)、每天進(jìn)行聚合,供在線報(bào)表使用。
狀態(tài)分了3個(gè)級(jí)別:正常(0)、警告(1)、異常(2),聚合時(shí)需要使用max選擇最差的狀態(tài),就需要對(duì)狀態(tài)值進(jìn)行處理加上級(jí)別和狀態(tài)位個(gè)數(shù),就要借助bigint型來(lái)做運(yùn)算了,
問(wèn)題是再將bigint 轉(zhuǎn)為 int時(shí)獲取原始狀態(tài)值時(shí),SQLServer報(bào)錯(cuò)了:
消息 8115,級(jí)別 16,狀態(tài) 2,第 1 行
將 expression 轉(zhuǎn)換為數(shù)據(jù)類(lèi)型 int 時(shí)出現(xiàn)算術(shù)溢出錯(cuò)誤。
因?yàn)闋顟B(tài)碼中已經(jīng)用到了 0x80000000, 出現(xiàn)了符號(hào)位的問(wèn)題。
寫(xiě)了一個(gè)轉(zhuǎn)換函數(shù)解決了。
CREATE FUNCTION [dbo].[BigintToInt] ( @Value bigint ) RETURNS int AS BEGIN -- 是否有int符號(hào)位 IF @Value & 0x80000000 <> 0 RETURN @Value & 0xFFFFFFFF | 0xFFFFFFFF00000000 -- 無(wú)符號(hào)位 RETURN @Value & 0xFFFFFFFF END
- SQL Server附加數(shù)據(jù)庫(kù)報(bào)錯(cuò)無(wú)法打開(kāi)物理文件,操作系統(tǒng)錯(cuò)誤5的圖文解決教程
- SQL Server 2005/2008 導(dǎo)入導(dǎo)出數(shù)據(jù)常見(jiàn)報(bào)錯(cuò)解決方法
- windows11安裝sqlserver?2016數(shù)據(jù)庫(kù)報(bào)錯(cuò)等待數(shù)據(jù)庫(kù)引擎恢復(fù)句柄失敗解決辦法
- Windows 11安裝SQL Server 2019出現(xiàn)"等待數(shù)據(jù)庫(kù)引擎恢復(fù)句柄失敗"問(wèn)題完美解決方案
相關(guān)文章
如何開(kāi)啟SqlServer 遠(yuǎn)程訪問(wèn)
這篇文章主要介紹了如何開(kāi)啟SqlServer 遠(yuǎn)程訪問(wèn),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
一條SQL語(yǔ)句查詢(xún)多個(gè)數(shù)據(jù)庫(kù)
最近做項(xiàng)目遇到這樣的需求,要求一條SQL語(yǔ)句從多個(gè)數(shù)據(jù)庫(kù)查詢(xún)出相關(guān)聯(lián)的結(jié)果,輸出到客戶(hù)端,怎么解決呢?下面小編給大家介紹下,一起看看吧2018-03-03
SQL Server數(shù)據(jù)庫(kù)按百分比查詢(xún)出表中的記錄數(shù)
這篇文章主要介紹了SQL Server數(shù)據(jù)庫(kù)在一個(gè)表中按百分比查詢(xún)出記錄條數(shù)的方法及代碼示例,需要的朋友可以參考下2015-08-08
sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法
sp_executesql 使用復(fù)雜的Unicode 表達(dá)式錯(cuò)誤的解決方法,需要的朋友可以參考下2012-01-01
利用sys.sysprocesses檢查SqlServer的阻塞和死鎖
Sys.SysProcesses 系統(tǒng)表是一個(gè)很重要的系統(tǒng)視圖,主要用來(lái)定位與解決Sql Server的阻塞和死鎖2011-10-10
Sql Server 開(kāi)窗函數(shù)Over()的使用實(shí)例詳解
這篇文章主要介紹了Sql Server 開(kāi)窗函數(shù)Over()的使用,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05
SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE
查看SQL Server的幫助才發(fā)現(xiàn),厲害啊,原來(lái)還有這么厲害的東西,不由的想起以前做水晶報(bào)表的時(shí)候,原來(lái)在SQL Server中就可以實(shí)現(xiàn)這樣的功能.2010-07-07
SQL Server查找表名或列名中包含空格的表和列實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于SQL Server如何查找表名或列名中包含空格的表和列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-09-09
如何快速刪掉SQL Server登錄時(shí)登錄名下拉列表框中的選項(xiàng)
本文給大家分享如何快速刪掉SQL Server登錄時(shí)登錄名下拉列表框中的選項(xiàng),包括問(wèn)題原因分析和解決方案,非常不錯(cuò),需要的朋友參考下吧2016-11-11

