MySQL FROM_BASE64() 函数
MySQL FROM_BASE64() 函数接受一个使用 base-64 编码格式编码的字符串值,将其解码为二进制字符串并返回结果。Base64 编码是一种仅使用可打印 ASCII 字符表示二进制数据的方法。
如果传递给此函数的参数不是有效的 base-64 字符串或 NULL,则返回 NULL 值。如果您在本地调用此函数,结果值将为十六进制表示法。
语法
以下是 MySQL FROM_BASE64() 函数的语法 -
FROM_BASE64(str)
参数
此函数接受一个 base64 编码的字符串值作为参数。
返回值
此函数返回给定字符串的解码后的二进制数据。
示例
在下面的示例中,我们解码一个 Base64 编码的字符串并以十六进制格式显示结果 -
SELECT FROM_BASE64('VHV0b3JpYWxzcG9pbnQ=');
以下是上述代码的输出 -
| FROM_BASE64('VHV0b3JpYWxzcG9pbnQ=') |
|---|
| 0x5475746F7269616C73706F696E74 |
如果禁用 --binary-as-hex 值,上述查询的结果将如下所示 -
SELECT FROM_BASE64('VHV0b3JpYWxzcG9pbnQ=');
以上代码的输出如下所示 -
| FROM_BASE64('VHV0b3JpYWxzcG9pbnQ=') |
|---|
| Tutorialspoint |
示例
以下是另一个示例,我们解码一个较短的 Base64 字符串 -
SELECT FROM_BASE64('dGVzdA==');
获得的输出如下:-
| FROM_BASE64('dGVzdA==') |
|---|
| 0x74657374 |
如果禁用 --binary-as-hex 值,则上述查询的结果将如下所示:-
SELECT FROM_BASE64('dGVzdA==');
生成的结果如下 -
| FROM_BASE64('dGVzdA==') |
|---|
| 0test |
示例
您还可以结合使用 TO_BASE64() 和 FROM_BASE64() 函数对字符串进行编码和解码 -
SELECT TO_BASE64('Hello how are you'),
FROM_BASE64(TO_BASE64('Hello how are you'));
我们得到如下输出:-
| TO_BASE64('Hello how are you') | FROM_BASE64(TO_BASE64('Hello how are you')) |
|---|---|
| SGVsbG8gaG93IGFyZSB5b3U= | 0x48656C6C6F20686F772061726520796F75 |
如果禁用 --binary-as-hex 值,上述查询的结果将如下所示 -
SELECT TO_BASE64('Hello how are you'),
FROM_BASE64(TO_BASE64('Hello how are you'));
以下是上述代码的输出 -
| TO_BASE64('Hello how are you') | FROM_BASE64(TO_BASE64('Hello how are you')) |
|---|---|
| SGVsbG8gaG93IGFyZSB5b3U= | Hello how are you |
示例
如果传递 NULL 或无效字符串作为参数,此函数将返回 NULL -
SELECT FROM_BASE64(NULL);
生成的结果如下所示 -
| FROM_BASE64(NULL) |
|---|
| 0x |
这里,我们将"无效字符串"作为参数传递给 FROM_BASE64() 函数 -
SELECT FROM_BASE64('无效字符串');
结果如下所示 -
| FROM_BASE64('无效字符串') |
|---|
| 0x |
如果禁用 --binary-as-hex 值,上述查询的结果将如下所示 -
SELECT FROM_BASE64(NULL);
生成的结果如下 -
| FROM_BASE64(NULL) |
|---|
| NULL |
示例
您还可以将表的列名作为参数传递给此函数,并解码其中的值。
让我们创建一个名为"DATA"的表,并使用 CREATE 和 INSERT 语句向其中插入记录,如下所示 -
CREATE TABLE DATA ( Name VARCHAR(15), UserID INT, Val VARCHAR(50) );
现在,让我们使用 INSERT 语句将记录插入其中 -
INSERT INTO DATA VALUES
('Raju', 1001, 'S2V5MWFiYzEyMw'),
('Rahman', 1002, 'S2V5MWFiYzEyMw=='),
('Robert', 1002, 'a2V5Mw==');
获取的数据如下 −
| Name | UserID | Val |
|---|---|---|
| Raju | 1001 | S2V5MWFiYzEyMw |
| Rahman | 1002 | S2V5MWFiYzEyMw== |
| Robert | 1002 | a2V5Mw== |
以下查询将"Val"列的值从 Base64 字符串解码为二进制字符串 -
SELECT Name, UserID, Val, FROM_BASE64(Val) FROM DATA;
执行上述代码后,我们得到以下输出 -
| Name | UserID | Val | FROM_BASE64(Val) |
|---|---|---|---|
| Raju | 1001 | S2V5MWFiYzEyMw | 0x4B657931616263313233 |
| Rahman | 1002 | S2V5MWFiYzEyMw== | 0x4B657931616263313233 |
| Robert | 1002 | a2V5Mw== | 0x6B657933 |
如果禁用 --binary-as-hex 值,上述查询的结果将如下所示:-
SELECT Name, UserID, Val, FROM_BASE64(Val) FROM DATA;
上述代码的输出如下所示:-
| Name | UserID | Val | FROM_BASE64(Val) |
|---|---|---|---|
| Raju | 1001 | S2V5MWFiYzEyMw | key1abc123 |
| Rahman | 1002 | S2V5MWFiYzEyMw== | key2abc |
| Robert | 1002 | a2V5Mw== | key3 |
mysql-from-base64-function.html