如何在sql server 2005中使用uniqueidentifier数据类型重新创建以下c#代码。
string encoded = Convert.ToBase64String(guid.ToByteArray());
我尝试过在互联网上遇到的几个例子,例如http://www.vbforums.com/showthread.php?t=554886,但它们都返回比.net函数更长的字符串。
答案 0 :(得分:3)
如果您传入uniqueidentifier
,则链接中的示例有效Guid guid = Guid.NewGuid();
string encoded = Convert.ToBase64String(guid.ToByteArray());
Console.WriteLine(guid);
Console.WriteLine(encoded);
代表
32705fe3-cedd-4bfd-a881-9dd11e543f9e
419wMt3O/UuogZ3RHlQ/ng==
并且
declare @guid uniqueidentifier = '32705fe3-cedd-4bfd-a881-9dd11e543f9e'
select dbo.f_BinaryToBase64(@guid)
的
419wMt3O/UuogZ3RHlQ/ng==
答案 1 :(得分:1)
我的指南是在nvarchar(MAX)列中,名为“#guid'看起来像这样
{4A449FE1-8989-4D69-935C-9E918244DEED}
采取一些步骤即显示我的工作。我在我的表guidreal,guidbinary,guidbase64中添加了三列。我意识到这可以压缩: - )。
1
update [Database].[dbo].[LotofRecords]
set guidreal = Cast(Replace(Replace([guid],'{',''),'}','') AS UNIQUEIDENTIFIER)
2
update [Database].[dbo].[LotofRecords]
set guid_binary = cast(guidreal as VARBINARY(MAX))
3
update [Database].[dbo].[LotofRecords]
set guidBase64 = cast(N'' as XML).value(
'xs:base64Binary(xs:hexBinary(sql:column("guid_binary")))'
,'nvarchar(25)'
)
给了我
4Z9ESomJaU2TXJ6RgkTe7Q==
使用
解码回varbinaryselect cast(N'' as XML).value(
'xs:base64Binary(sql:column("guidbase64"))'
,'varbinary(max)'
)
,guid_binary
from
[Database].[dbo].[LotofRecords]
答案 2 :(得分:0)
我可能错了,但我认为这是不可能的。 C#侧的算法与您在sql part中找到的任何组合都不同。
要解决这个问题,我建议一方做所有事情。即:从c#端填充数据库或在sql部分中执行所有操作。