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