ถอดรหัส Base64 String ใน SQL Server


15

ฉันมีvarcharคอลัมน์ในตารางใน SQL Server ซึ่งเก็บสตริงข้อความที่เข้ารหัส base64 ซึ่งฉันต้องการถอดรหัสเป็นข้อความธรรมดาที่เทียบเท่า

SQL Server มีฟังก์ชันดั้งเดิมใด ๆเพื่อจัดการกับสิ่งนี้หรือไม่?

สตริง base64 ตัวอย่าง:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==

ซึ่งถอดรหัสเป็น:

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

คำตอบ:


20

คิดออก:

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")หากคุณต้องการใช้ตัวแปรที่ประกาศเช่นถ้าคุณกำลังสร้างฟังก์ชั่นหรืออะไรบางอย่าง

มันทำให้การใช้การแปลง XSL โดยใช้ฟังก์ชั่น XML ในตัว (ตั้งแต่ SQL Server 2005)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.