TSQL将newid转换为十进制(38,0)

时间:2013-03-11 10:05:29

标签: sql-server tsql guid newid

我想将 newid()输出转换或转换为十进制(需要的空间最小)

到目前为止,我做到了这一点:

SELECT  CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )

但是我收到了这个错误:

  

将数据类型varchar转换为数字时出错。

搜索了很多但是感到沮丧,来到这里寻求帮助。

非常感谢提前。


更新:十进制(8,0)变为十进制(38,0)并仍然得到相同的错误。

1 个答案:

答案 0 :(得分:5)

这是xy problem

用于GUID的正确数据类型为uniqueidentifier。无需自己将其转换为某种数值数据类型。

uniqueidentifier以16字节二进制格式存储,而不是显示的char(36)字符串。