【问题标题】:SQL Server stored procedure convert varbinary to Base64StringSQL Server 存储过程将 varbinary 转换为 Base64String
【发布时间】:2015-09-21 16:31:14
【问题描述】:

我的任务是创建一个存储过程,它可以查看一个表并拉出ObjectGUIDextensionAttribute6 列并进行比较。

基本上objectGUIDvarbinary 列,extensionAttribute6nvarchar 列。我真正需要做的是提取所有extensionAttribute6 不为空的记录,然后取objectGUID 的值并将其转换为base-64 字符串值并将该值与extensionAttribute6 列中的值进行比较那个记录。如果值匹配,则插入一个名为Compliance (nvarchar(10)) 的计算列并将True 放在那里,否则放假。

【问题讨论】:

  • SQL Server/Oracle/MySQL?
  • 对不起它的 MS MSql 2012

标签: sql stored-procedures sql-server-2012


【解决方案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

【讨论】:

  • 感谢您的回答。当我运行第一部分时,它给了我输出,我可以看到 base64value 的样子。但我实际上并不想修改表格。我只想查看哪些行的 extensionAttribute6 值对于该行的 objectGUID 具有有效的 base64 值。
  • Lad2025 - 谢谢。这是超级的,这就像一个魅力。非常感谢您的快速响应和专家指导:)
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 2020-06-06
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
相关资源
最近更新 更多