BASE64_DECODE (Transact-SQL)

适用于:Azure SQL 数据库SQL 分析端点和 Microsoft Fabric 中的仓库

BASE64_DECODE 将 base64 编码的 varchar 转换为相应的 varbinary。

Transact-SQL 语法约定

语法

BASE64_DECODE(expression)

参数

expression

varchar 类型的表达式 (n | max)。

返回类型

  • Varbinary(8000)
  • 如果输入为 varchar(max),则为 Varbinary(max)
  • 如果输入表达式为 null,则输出为 null。

备注

编码后的字符串的字母表必须是 RFC 4648 表 1 的字母表,可能包含填充,但不需要填充。 此外也接受 RFC 4648 表 2 中指定的 URL 安全的字母表。 此函数忽略空格字符:\n\r\t

  • 如果输入包含的一些字符未包含在 RFC 4648 指定的标准或 URL 安全的字母表中,函数将返回错误“消息 9803,级别 16,状态 20,第 15 行,类型 "Base64Decode" 的数据无效”。
  • 如果数据包含有效字符,但格式不正确,函数将返回错误“消息 9803,状态 21”。
  • 如果输入包含两个以上的填充字符或填充字符后跟额外的有效输入,函数将返回错误“消息 9803,状态 23”。

示例

A. 标准 BASE64_DECODE

在以下示例中,base64 编码的字符串解码回 varbinary。

SELECT BASE64_DECODE ('qQ==');

下面是结果集。

-------------
0xA9

(1 row affected)

B. BASE64_DECODE 标准 base64 字符串

在以下示例中,字符串采用 base64 解码。 请注意,字符串包含 URL 不安全的字符 =/

SELECT BASE64_DECODE('yv7K/g==')

下面是结果集。

------------  
0xCAFECAFE

(1 row affected)

C. BASE64_DECODE varchar url_safe base64 字符串

与示例 B 相比,此示例中的 base64 字符串是使用 RFC 4648 表 2 (url_safe) 进行编码的,但可以采用与示例 B 相同的方式进行解码。

SELECT BASE64_DECODE('yv7K_g')

下面是结果集。

------------  
0xCAFECAFE
(1 row affected)

D. BASE64_DECODE varchar 包含不在 base64 字母表中的字符

此示例包含的字符不是有效的 base64 字符。

SELECT BASE64_DECODE('qQ!!')

下面是结果集。

Msg 9803, Level 16, State 20, Line 223
Invalid data for type "Base64Decode".

后续步骤