我想将newid()输出转换或转换为十进制(需要最小空间)
到目前为止,我这样做了:
SELECT CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )
但我收到了这个错误:
将数据类型 varchar 转换为数字时出错。
搜索了很多但感到沮丧,来这里寻求帮助。
提前谢谢了。
更新:十进制(8,0)变成十进制(38,0),仍然得到同样的错误。
我想将newid()输出转换或转换为十进制(需要最小空间)
到目前为止,我这样做了:
SELECT CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )
但我收到了这个错误:
将数据类型 varchar 转换为数字时出错。
搜索了很多但感到沮丧,来这里寻求帮助。
提前谢谢了。
更新:十进制(8,0)变成十进制(38,0),仍然得到同样的错误。
这是一个xy 问题。
用于 GUID 的正确数据类型是uniqueidentifier
. 无需自己将其转换为某种数字数据类型。
uniqueidentifier
以 16 字节二进制格式存储,而不是显示的字符串char(36)
。