2015-09-21 152 views
1

我的任務是創建一個存儲過程,它可以查看一個表格並拉起ObjectGUIDextensionAttribute6列並進行比較。SQL Server存儲過程將varbinary轉換爲Base64String

基本上objectGUIDvarbinary列,而extensionAttribute6nvarchar列。我真正需要做的是提取extensionAttribute6不爲空的所有記錄,然後取objectGUID的值,並將其轉換爲基本64字符串值,並將該值與該記錄的列extensionAttribute6中的值進行比較。如果值匹配,則插入名爲Compliancenvarchar(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數據類型而不是字符串。

編輯:

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值,該行具有該行的objectGUID的有效base64值。 – gtrivedi

+0

@gtrivedi查看最新的答案 – lad2025

+0

Lad2025 - 謝謝。這是超級的,這就像一個魅力。真的很感謝你的快速反應和專家指導:) – gtrivedi

相關問題