【发布时间】:2010-11-26 06:46:04
【问题描述】:
我无法控制其架构的表包含定义为 varchar(50) 的列,该列以“a89b1acd95016ae6b9c8aabb07da2010”(无连字符)格式存储唯一标识符
我想将这些转换为 SQL 中的唯一标识符,以传递给 .Net Guid。但是,以下查询行对我不起作用:
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
结果:
消息 8169,第 16 级,状态 2,第 1 行 从字符串转换为唯一标识符时转换失败。
使用连字符唯一标识符的相同查询工作正常,但数据未以该格式存储。
是否有另一种(有效的)方法可以将这些字符串转换为 SQL 中的唯一标识符。 -- 我不想在 .Net 代码中这样做。
【问题讨论】:
-
只有一行字符和数字实际上不是有效的 GUID 表示 - 您必须求助于 Quassnoi 在他的回答中显示的字符串解析魔法。
标签: sql sql-server-2005 uniqueidentifier