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
廣告

© . All rights reserved.