use*_*169 1 sql sql-server varchar casting uniqueidentifier
我想投一个AuctionId这是一个UNIQUEIDENTIFIER到varchar(36),然后回到一个UNIQUEIDENTIFIER.请帮我.
CAST((SUBSTRING(CAST([AuctionId] as VARCHAR(36)), 0, 35) + '1') AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误:
消息8169,级别16,状态2,行647从字符串转换为uniqueidentifier时转换失败.
提前致谢
'1'不是问题.您显然是在尝试将GUID的最后一个字符更改为1.我不知道为什么,但这是您的要求.
你的问题是子字符串.在TSQL中,子字符串使用从1开始的索引而不是 0,如在C或C#中.这意味着你的substring语句实际上返回一个34个字符的字符串(+1个字符组成35个字符串,而你被告知35个字符的字符串不是GUID,这是正确的).
只需更改,0,35为1,35