在 MySQL 中将 VARBINARY 转换为 Base64
Convert VARBINARY to Base64 in MySQL
这似乎是一个基本场景,但我无法在任何地方找到相关信息。
我是 MySQL 的新手,拥有多年的 Microsoft SQL 服务器经验。
在 MySQL 中,如何将 BINARY
或 VARBINARY
值转换为 Base64 字符串,反之亦然?
在 Microsoft SQL 服务器中,我一直使用这样的代码:
CREATE FUNCTION [dbo].[convert_binary_base64] ( @input [VARBINARY] ( 3000 ) )
RETURNS [VARCHAR] ( 4000 ) AS
BEGIN
RETURN CAST ( '' AS [XML] ).value ( 'xs:base64Binary(sql:variable("@input"))' , 'VARCHAR(4000)' ) ;
END
GO
根据 mysql.com
,看起来 TO_BASE64
函数只能从文本转换为文本:
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_to-base64
与上面的 Microsoft SQL 服务器示例一样,MySQL 中是否有可用的 XML 或 JSON 操作来执行此操作?
或者我可以强制 MySQL 将 "interpret" 一个 VARBINARY
变量作为文本,然后将文本传递给 TO_BASE64
吗?
(如果是这样,会导致性能下降吗?)
To_BASE64 也可以使用 VARCHAR 作为基础并插入到 varchar
DELIMITER //
CREATE FUNCTION encodebase64(
Inputtext
VARBINARY(3000)
) RETURNS VARCHAR(4000)
DETERMINISTIC
BEGIN
Return TO_BASE64(Inputtext);
END //
DELIMITER ;
所以
SELECT encodebase64('text');
returns
# encodebase64('text')
dGV4dA==
这似乎是一个基本场景,但我无法在任何地方找到相关信息。
我是 MySQL 的新手,拥有多年的 Microsoft SQL 服务器经验。
在 MySQL 中,如何将 BINARY
或 VARBINARY
值转换为 Base64 字符串,反之亦然?
在 Microsoft SQL 服务器中,我一直使用这样的代码:
CREATE FUNCTION [dbo].[convert_binary_base64] ( @input [VARBINARY] ( 3000 ) )
RETURNS [VARCHAR] ( 4000 ) AS
BEGIN
RETURN CAST ( '' AS [XML] ).value ( 'xs:base64Binary(sql:variable("@input"))' , 'VARCHAR(4000)' ) ;
END
GO
根据 mysql.com
,看起来 TO_BASE64
函数只能从文本转换为文本:
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_to-base64
与上面的 Microsoft SQL 服务器示例一样,MySQL 中是否有可用的 XML 或 JSON 操作来执行此操作?
或者我可以强制 MySQL 将 "interpret" 一个 VARBINARY
变量作为文本,然后将文本传递给 TO_BASE64
吗?
(如果是这样,会导致性能下降吗?)
To_BASE64 也可以使用 VARCHAR 作为基础并插入到 varchar
DELIMITER //
CREATE FUNCTION encodebase64(
Inputtext
VARBINARY(3000)
) RETURNS VARCHAR(4000)
DETERMINISTIC
BEGIN
Return TO_BASE64(Inputtext);
END //
DELIMITER ;
所以
SELECT encodebase64('text');
returns
# encodebase64('text')
dGV4dA==