Sql-Server

在 SQL Server 中本機解碼 Base64 字元串

  • August 5, 2021

varchar在 SQL Server 的表中有一個列,其中包含一個 base64 編碼的文本字元串,我想將其解碼為等效的純文字

SQL Server 是否有任何本機功能來處理這種類型的事情?

範例 base64 字元串:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

解碼為:

role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764

弄清楚了:

SELECT 
   CONVERT
   (
       VARCHAR(MAX), 
       CAST('' AS XML).value('xs:base64Binary(sql:column("BASE64_COLUMN"))', 'VARBINARY(MAX)')
   ) AS RESULT
FROM
   (
       SELECT 'cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==' AS BASE64_COLUMN
   ) A

輸出:

role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764

只需換掉BASE64_COL_NAME你的列名,或者sql:column("BASE64_COLUMN")如果sql:variable("@base64variable")你想使用聲明的變數,例如如果你正在製作一個函式或其他東西,你可以替換為。

它利用內置 XML 功能的 XSL 轉換(自 SQL Server 2005 起)

引用自:https://dba.stackexchange.com/questions/191273