跳到主要内容

FROM_BASE64

描述

FROM_BASE64 函数用于将 Base64 编码的字符串解码回原始字符串。这是 TO_BASE64 函数的逆操作,遵循 RFC 4648 标准。Base64 编码常用于在文本协议中传输二进制数据,该函数可以将编码的数据还原。支持标准 Base64 字符集(A-Z, a-z, 0-9, +, /)和填充字符(=)。

语法

FROM_BASE64(<str>)

参数

参数说明
<str>需要解码的 Base64 编码字符串。类型:VARCHAR

返回值

返回 VARCHAR 类型,表示 Base64 解码后的原始字符串。

解码规则:

  • 接受标准 Base64 字符集:A-Z, a-z, 0-9, +, /
  • 支持填充字符 =
  • 遵循 RFC 4648 标准
  • 自动忽略空白字符(空格、换行等)
  • 解码结果可能包含不可打印字符

特殊情况:

  • 如果输入为 NULL,返回 NULL
  • 如果输入包含非法的 Base64 字符,返回 NULL
  • 如果输入为空字符串,返回空字符串
  • 填充错误或格式不正确,返回 NULL

示例

  1. 基本解码
SELECT FROM_BASE64('MQ=='), FROM_BASE64('QQ==');
+---------------------+---------------------+
| FROM_BASE64('MQ==') | FROM_BASE64('QQ==') |
+---------------------+---------------------+
| 1 | A |
+---------------------+---------------------+
  1. 多字符解码
SELECT FROM_BASE64('MjM0'), FROM_BASE64('SGVsbG8=');
+---------------------+-------------------------+
| FROM_BASE64('MjM0') | FROM_BASE64('SGVsbG8=') |
+---------------------+-------------------------+
| 234 | Hello |
+---------------------+-------------------------+
  1. NULL 值处理
SELECT FROM_BASE64(NULL);
+-------------------+
| FROM_BASE64(NULL) |
+-------------------+
| NULL |
+-------------------+
  1. 空字符串处理
SELECT FROM_BASE64('');
+-----------------+
| FROM_BASE64('') |
+-----------------+
| |
+-----------------+
  1. 非法字符处理
SELECT FROM_BASE64('!!!'), FROM_BASE64('ABC@DEF');
+--------------------+------------------------+
| FROM_BASE64('!!!') | FROM_BASE64('ABC@DEF') |
+--------------------+------------------------+
| NULL | NULL |
+--------------------+------------------------+
  1. 长字符串解码
SELECT FROM_BASE64('SGVsbG8gV29ybGQ='), FROM_BASE64('VGhlIHF1aWNrIGJyb3duIGZveA==');
+---------------------------------+-----------------------------------------+
| FROM_BASE64('SGVsbG8gV29ybGQ=') | FROM_BASE64('VGhlIHF1aWNrIGJyb3duIGZveA==') |
+---------------------------------+-----------------------------------------+
| Hello World | The quick brown fox |
+---------------------------------+-----------------------------------------+
  1. UTF-8 多字节字符解码
SELECT FROM_BASE64('4bmt4bmb4bmA'), FROM_BASE64('4bmN4bmNdW1haSBoZWxsbw==');
+---------------------------+---------------------------------------+
| FROM_BASE64('4bmt4bmb4bmA') | FROM_BASE64('4bmN4bmNdW1haSBoZWxsbw==') |
+---------------------------+---------------------------------------+
| ṭṛì | ḍḍumai hello |
+---------------------------+---------------------------------------+
  1. 电子邮件地址解码
SELECT FROM_BASE64('dXNlckBleGFtcGxlLmNvbQ=='), FROM_BASE64('YWRtaW4udGVzdEBjb21wYW55Lm9yZw==');
+----------------------------------------+----------------------------------------------+
| FROM_BASE64('dXNlckBleGFtcGxlLmNvbQ==') | FROM_BASE64('YWRtaW4udGVzdEBjb21wYW55Lm9yZw==') |
+----------------------------------------+----------------------------------------------+
| user@example.com | admin.test@company.org |
+----------------------------------------+----------------------------------------------+
  1. JSON 数据解码
SELECT FROM_BASE64('eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9'), FROM_BASE64('WzEsMiwzLDQsNV0=');
+-----------------------------------------------+---------------------------+
| FROM_BASE64('eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9') | FROM_BASE64('WzEsMiwzLDQsNV0=') |
+-----------------------------------------------+---------------------------+
| {"name":"John","age":30} | [1,2,3,4,5] |
+-----------------------------------------------+---------------------------+
  1. 编码解码循环验证
SELECT FROM_BASE64(TO_BASE64('Hello')), FROM_BASE64(TO_BASE64('测试'));
+----------------------------------+--------------------------------+
| FROM_BASE64(TO_BASE64('Hello')) | FROM_BASE64(TO_BASE64('测试')) |
+----------------------------------+--------------------------------+
| Hello | 测试 |
+----------------------------------+--------------------------------+