2
我想投或轉換NEWID()輸出爲十進制(與所需的最小空間)TSQL NEWID轉換成十進制(38,0)
到目前爲止,我這樣做:
SELECT CAST('0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '') AS DECIMAL(38,0))
但我得到這個錯誤:
將數據類型varchar轉換爲數字時出錯。
搜了很多,但越來越沮喪,來到這裏找到一些幫助。
非常感謝提前。
更新:十進制(8,0)變成十進制(38,0),仍然得到相同的錯誤。
這似乎註定要失敗。 Guid是16個字節。多於8位小數。如果轉換爲16字節的帶符號整數,範圍將爲'-170,141,183,460,469,231,731,687,303,715,884,105,728'至'170,141,183,460,469,231,731,687,303,715,884,105,727' – 2013-03-11 10:13:14
@Martin我認爲它最多支持17個字節:http://msdn.microsoft.com/en-us/library/ms187746 .aspx,所以我相信這不是不可能的。 – 2013-03-11 10:22:12
這可能不是不可能的,但是你將使用什麼算法從GUID轉換爲'decimal(38,X)'?使用整數表示是不可能的,因爲這將需要'十進制(39,0)',你會從中得到什麼好處? – 2013-03-11 10:25:51