VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

TO_BASE64

功能描述

根据BASE64编码规则,将一个字符串编码成BASE64编码格式,返回字符串的编码结果。

返回值类型:text

编码规则

  • 将输入的每三个字节(24位)变成四个字节(32位):6位为一组,高位补两个0,组成一个字节,这样正好能将三个字节补成四个字节,其中每个字节只会对应0(00000000)到63(00111111)。

  • 每76个字符加一个换行符。

  • 编码0(00000000)到61(00111111)对应A-Z,a-z,0-9共62个字符,62(00111110)的编码是+,63(00111111)的编码是/

  • 若输入的字符串字节数不为三的倍数,那么剩余的字节根据编码规则转换,若有一个字节不满8位,则在低位补0补满8位,同时用“=”将转换结果补满四个字节。若最后一组只有两个字节,每6位一组,第三组只有4位,低位要补两个0,然后这三组再分别高位补两个0,转成三个字符,末尾补一个“=”;若最后一组只有一个字节,每6位一组,第二组只有2位,低位要补四个0,然后这两组再分别高位补两个0,转成两个字符,末尾补两个“=”。

注意事项

如果输入的是NULL,那么返回的结果为NULL。

语法格式

TO_BASE64(str)

参数说明

str

待编码的任意长度字符串。

示例

示例1: 'abc'

SELECT TO_BASE64('abc');`

返回结果如下:

 to_base64
-----------
 YWJj
(1 row)

编码过程分析

1、将字符串用二进制表示:01100001(a)01100010(b)01100011(c)

2、将二进制串拆分,每6位一组:011000 010110 001001 100011

3、在每一组的高位都补上两个0:00011000 00010110 00001001 00100011

4、查找base64编码转换表:00011000,00010110,00001001,00100011对应的字符为:Y,W,J,j。故编码结果为YWJj

示例2: 'ab'

SELECT TO_BASE64('ab');

返回结果为:

 to_base64
-----------
 YWI=
(1 row)

编码过程分析

1、将字符串用二进制表示:01100001(a)01100010(b)

2、将二进制串拆分,每6位一组,由于最后一组只有4位,在低位补0补够6位:011000 010110 0010(00)

3、在每一组的高位都补上两个0:00011000 00010110 00001000

4、查找base64编码转换表:00011000,00010110,00001000对应的字符为:Y,W,I。

5、由于输入的字符串字节数不为三的倍数,导致转换后的字符数不为4的倍数,所以最后需要用=号补满4个字节,最终编码结果为:YWI=

参考链接

FROM_BASE64