MySQL FROM_BASE64() 函数



MySQL 的 **FROM_BASE64()** 函数接受一个使用 Base64 编码格式编码的字符串值,将其解码为二进制字符串并返回结果。Base64 编码是一种仅使用可打印 ASCII 字符表示二进制数据的方法。

如果传递给此函数的参数不是有效的 Base64 字符串或 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** 值,则上述查询的结果将如下所示 &mnus;

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

在这里,我们将 'Invalid String' 作为参数传递给 FROM_BASE64() 函数:

SELECT FROM_BASE64('Invalid string');

产生的结果如下所示:

FROM_BASE64('Invalid string')
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==');

获得的 DATA 如下:

姓名 用户 ID
Raju 1001 S2V5MWFiYzEyMw
Rahman 1002 S2V5MWFiYzEyMw==
Robert 1002 a2V5Mw==

以下查询将 'Val' 列的值从 Base64 字符串解码为二进制字符串:

SELECT Name, UserID, Val, FROM_BASE64(Val) 
FROM DATA;

执行上述代码后,我们将获得以下输出:

姓名 用户 ID 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;

以上代码的输出如下:

姓名 用户 ID FROM_BASE64(Val)
Raju 1001 S2V5MWFiYzEyMw key1abc123
Rahman 1002 S2V5MWFiYzEyMw== key2abc
Robert 1002 a2V5Mw== key3
mysql-from-base64-function.htm
广告