2015-09-21 4 views
1

Мне было поручено создать хранимую процедуру, которая может смотреть на таблицу и вытащить столбец и выполнить сравнение.SQL Server хранимой процедуры конвертировать varbinary в Base64String

В основном objectGUID - столбец varbinary, а extensionAttribute6 - столбец nvarchar. То, что мне действительно нужно сделать, - это вытащить все записи, где extensionAttribute6 не является нулевым, затем возьмите значение objectGUID и преобразуйте его в строковое значение base-64 и сравните это значение со значением в столбце extensionAttribute6 этой записи. Если значение соответствует, тогда вставьте вычисленный столбец с именем Compliance (nvarchar(10)) и положите там True, иначе положите там ложь.

enter image description here

+0

SQL Server/Oracle/MySQL? – lad2025

+0

Извините, MS MSql 2012 – gtrivedi

+0

MS SQL Server 2012 – gtrivedi

ответ

1

Вы можете использовать XML получить Base64:

Получение записей decoded(objectGUID) = extensionAttribute6

SELECT * 
FROM your_tab 
WHERE extensionAttribute6 IS NOT NULL 
    AND CAST(CAST('' as XML).value('xs:base64Binary(sql:column("objectGUID"))', 'VARBINARY(MAX)') AS NVARCHAR(MAX)) = extensionAttribute6 

И обновление:

UPDATE your_tab 
SET Compliance = IIF(CAST(CAST('' as XML).value('xs:base64Binary(sql:column("objectGUID"))', 'VARBINARY(MAX)') AS NVARCHAR(MAX)) = extensionAttribute6, 'True', 'False') 

Для сохраняя True/False, вы должны использовать BIT тип данных вместо строки.

EDIT:

SELECT * 
    [Compliance] = IIF(CAST(CAST('' as XML).value('xs:base64Binary(sql:column("objectGUID"))', 'VARBINARY(MAX)') AS NVARCHAR(MAX)) = extensionAttribute6, 'True', 'False') 
FROM your_tab 
+0

Благодарим за ответ. Когда я запускаю первую часть, она дает мне результат, и я могу увидеть, как будет выглядеть base64value. Но я действительно не хочу изменять таблицу. Я просто хочу посмотреть, какие строки имеют значения extensionAttribute6, которые имеют действительное значение base64 для объектаGUID этой строки. – gtrivedi

+0

@gtrivedi См. Обновленный ответ – lad2025

+0

Lad2025 - Спасибо. Это супер, и это сработало как шарм. Очень ценю ваш быстрый ответ и экспертное руководство :) – gtrivedi

Смежные вопросы