0
我需要在觸發器中使用SQL Server GUID進行一些數學計算,並且難以找出如何將uniqueidentifier
轉換爲numeric(38,0)
。如何在SQL Server中使用GUID進行數學計算
一個潛在的問題:我的理解是這兩種數據類型都是16字節的「整數」。如果我在這裏錯了,請糾正我。
否則,我將如何去做這個轉換?我已經試過CAST和CONVERT,並繼續獲取不允許將數據類型uniqueidentifier顯式轉換爲數字。作爲錯誤消息,每當我嘗試。我真的不想分析每個角色,並在UDF中執行十六進制數學來執行此操作。
這可能嗎?
這裏是我的腳本瑞普這個真正的快:
DECLARE @guid uniqueidentifier
SET @guid = NEWID()
DECLARE @a numeric(38,0)
SET @a = 2
PRINT CAST(@guid AS numeric(38,0)) -- fails
PRINT @guid/@a -- also fails
答案必然「爲什麼」的問題是,我們錯過了一個要求(如從來沒有告訴它),但是可以用一個臨時的解決方案挽救的事情,直到我們可以回去和我們的下一個版本解決的事情。 – Jaxidian
'UNIQUEIDENTIFIER'不是一個16字節的'INT'。 http://msdn.microsoft.com/en-us/library/ms187942.aspx – Lamak
@Lamak盡我所知,'UNIQUEIDENTIFIER'是一個32個字符的十六進制數(最大值由16^32計算)。一個16字節的無符號整數將有一個由2 ^(16 * 8)計算的最大值。恰好發生2 ^(16 * 8)== 2^128 == 16^32。所以這兩種數據類型可以存儲相同數量的值。我只是試圖從一個轉換到另一個。這就是爲什麼我在原始問題中引用「整數」的原因。我從來沒有談過有關'INT'數據類型的任何內容,只是一個'數字(38,0)'數據類型。 – Jaxidian