iT邦幫忙

0

如何轉型Binary的資料

假設我有一筆Binary的資料,請問我要如何轉為base64,再轉型為sql_variant呢?

declare @value varbinary(max)=0x4100410041002E0050004E004700

//上網看到這個方法,但嘗試過後看起來是被截斷而未做轉型
select convert(sql_variant, 
    (select cast('' as xml).value('xs:base64Binary
        (sql:variable(''@value''))', 'varbinary')
    )
)

https://ithelp.ithome.com.tw/upload/images/20200110/20115336oMVkhVIo5W.png

1 個回答

0
石頭
iT邦研究生 2 級 ‧ 2020-01-10 23:35:03
最佳解答

我這裡提供幾個方式將varbinary轉成Base64編碼

select cast('' as xml)
      .value('xs:base64Binary(sql:variable("@value"))', 'varchar(max)')

select  @value as '*' for xml path('')

select * 
from (select @value as '*') Tbl
for xml path('')

sqlfiddle

anniecat iT邦新手 3 級 ‧ 2020-01-13 11:15:15 檢舉

石頭,謝謝您,經過嘗試以後是可行的,但想詢問以下幾個問題 :

  1. 這個語法的意思是,我把@value轉成base64Binary之後再轉成varchar(max)嗎?
select cast('' as xml)
      .value('xs:base64Binary(sql:variable("@value"))', 'varchar(max)')
  1. 所以如果我要指定型態,就必須使用第一個方法嗎?
  2. 轉成base64Binary的資料型態基本上就是varchar(max)嗎?
  3. 其他兩個的型態也是varchar(max)嗎?

以上再麻煩您了 > < 謝謝!

我要發表回答

立即登入回答