uniqueidentifier数据类型问题,请教,急!

ndcc777 2010-12-06 09:29:13
由于个人失误,第二个数据库初时时候 没有把第一个数据库残留数据清除,导致数据合并后,有些uniqueidentifier数据类型重复。。。
ItemGuid 字段数据类型是uniqueidentifier
执行

select * from TB_UserItem_Enchant where [ItemGuid] in(select [ItemGuid] from TB_UserItem_Enchant group by [ItemGuid] having count (*)>1)

查询到很多重复的。我想把重复的ItemGuid字段的数值最后一个数值 都变成z ,运行以下语句

update TB_UserItem_Enchant set [ItemGuid]=rtrim(left([ItemGuid],35))+'z' from TB_UserItem_Enchant a where exists(select 1 from TB_UserItem_Enchant where [ItemGuid]=a.[ItemGuid] and id<a.id)

提示:将字符串转换为 uniqueidentifier 时失败。

请教大家,该怎么办
...全文
413 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ndcc777 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]
应该必须是0-9A-F的吧,你把Z换成F
[/Quote]

正解,谢谢了
ndcc777 2010-12-06
  • 打赏
  • 举报
回复
楼上正解,忙晕头了,这都忘了。低级失误

谢谢楼上几位。
水族杰纶 2010-12-06
  • 打赏
  • 举报
回复
楼主可以考虑不用
uniqueidentifier 数据类型
改用GUID或者自增列嘛
guguda2008 2010-12-06
  • 打赏
  • 举报
回复
或者直接NEWID一个放进去
guguda2008 2010-12-06
  • 打赏
  • 举报
回复
应该必须是0-9A-F的吧,你把Z换成F
ndcc777 2010-12-06
  • 打赏
  • 举报
回复
没有方法将重复GUID的处理一下吗?
guguda2008 2010-12-06
  • 打赏
  • 举报
回复
不是所有的36位字符串都能转成GUID的,你这个方案不可行。要么你就直接存VARCHAR(36)
ndcc777 2010-12-06
  • 打赏
  • 举报
回复
运行楼上朋友的语句
提示
将 uniqueidentifier 值转换为 char 时结果空间不足。
幸运的意外 2010-12-06
  • 打赏
  • 举报
回复
update TB_UserItem_Enchant set [ItemGuid]=rtrim(left(cast([ItemGuid] as varchar),35))+'z' from TB_UserItem_Enchant a where exists(select 1 from TB_UserItem_Enchant where [ItemGuid]=a.[ItemGuid] and id<a.id)

用这个代码试试。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧