我无法控制该模式的表包含一个定义为varchar(50)的列,该列以'a89b1acd95016ae6b9c8aabb07da2010'格式存储唯一标识符(无连字符)
我想将这些转换为SQL中的uniqueidentifiers,以传递给.Net Guid。但是,以下查询行对我不起作用:
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
并导致:
讯息8169,第16级,州2,第1行 从字符串转换为uniqueidentifier时转换失败。
使用带连字符的uniqueidentifier的相同查询可以正常工作,但数据不会以该格式存储。
还有另一种(有效的)方法可以将这些字符串转换为SQL中的uniqueidentifiers。-我不想在.Net代码中这样做。
仅一行字符和数字实际上不是有效的GUID表示-您将不得不诉诸Quassnoi在其答案中所示的字符串解析魔术。
—
marc_s