Как Base64 кодировать GUID в SQL Server - PullRequest
3 голосов
/ 07 февраля 2012

Как я могу воссоздать следующий код c # с типом данных uniqueidentifier в sql server 2005.

string encoded = Convert.ToBase64String(guid.ToByteArray());

Я пробовал несколько примеров, с которыми сталкивался в Интернете, таких как http://www.vbforums.com/showthread.php?t=554886но все они возвращают строки намного длиннее, чем функция .net.

Ответы [ 3 ]

3 голосов
/ 07 февраля 2012

Образец в вашей ссылке работает, если вы передадите уникальный идентификатор

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 голос
/ 08 апреля 2015

мой гид был в столбце 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==

декодировать обратно в varbinary, используя

select cast(N'' as XML).value(
              'xs:base64Binary(sql:column("guidbase64"))'
              ,'varbinary(max)'
              )
              ,guid_binary
from
 [Database].[dbo].[LotofRecords]
0 голосов
/ 07 февраля 2012

Я могу ошибаться, но я думаю, что это невозможно.Алгоритм на стороне C # отличается от любой комбинации, которую вы можете найти в части sql.


Чтобы решить эту проблему, я рекомендую делать все в одной стороне.то есть: заполнить БД со стороны c # или сделать все в части sql.

...