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