Конвертировать VARBINARY в Base64 в MySQL - PullRequest
0 голосов
/ 23 октября 2019

Это похоже на базовый сценарий, но я нигде не могу найти соответствующую информацию.
Я новичок в MySQL, исходя из многолетнего опыта работы с Microsoft SQL Server.

В MySQL каквы конвертируете значение BINARY или VARBINARY в строку Base64 и наоборот?

В Microsoft SQL Server я использовал такой код:

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 Server, доступна ли операция XML или JSONв MySQL, чтобы выполнить это действие?

Или я могу заставить MySQL «интерпретировать» переменную VARBINARY как текст и передать текст в TO_BASE64?
(И если это так, это вызоветснижение производительности?)

1 Ответ

1 голос
/ 23 октября 2019

To_BASE64 также может использовать VARCAHR в качестве базы и вставить в varchar

DELIMITER //

CREATE FUNCTION encodebase64(
    Inputtext 
    VARBINARY(3000)
) RETURNS VARCHAR(4000)
DETERMINISTIC
BEGIN
 Return TO_BASE64(Inputtext);
END //

DELIMITER ;

, чтобы

 SELECT encodebase64('text');

вернул

# encodebase64('text')
dGV4dA==
...