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

Spo*_*ade 2 t-sql sql-server guid newid

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

到目前为止我这样做了:

SELECT  CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

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

搜索了很多,但感到沮丧,来到这里找到一些帮助.

提前谢谢了.


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

Mar*_*ith 5

这是一个xy问题.

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

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