Kin*_*sar 3 database oracle base64 plsql
我在 Oracle 中创建了以下函数来将我的字符串转换为 BASE64,并且在 64 个字符后得到一个新行。功能如下
function to_base64(t in varchar2) return varchar2 is
begin
return utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(t)));
end to_base64;
Run Code Online (Sandbox Code Playgroud)
我的输入是 tobase64('ACae23b41949dbcfa8cd2c8b114bb81af4:909f2edb3e9b8c7e9c545d2942aa8576')
我得到的输出如下,在 64 个字符后添加新行。
QUNhZTIzYjQxOTQ5ZGJjZmE4Y2QyYzhiMTE0YmI4MWFmNDo5MDlmMmVkYjNlOWI4
YzdlOWM1NDVkMjk0MmFhODU3Ng==
有人可以建议我如何删除新行或函数中所需的任何更改吗?
您可以使用replace()分别删除这两个字符:
function to_base64(t in varchar2) return varchar2 is
begin
return replace(
replace(
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(t))),
chr(10)),
chr(13)
);
end to_base64;
Run Code Online (Sandbox Code Playgroud)
或作为一对:
function to_base64(t in varchar2) return varchar2 is
begin
return replace(
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(t))),
chr(13)||chr(10)
);
end to_base64;
Run Code Online (Sandbox Code Playgroud)
然后不管怎样
select to_base64('ACae23b41949dbcfa8cd2c8b114bb81af4:909f2edb3e9b8c7e9c545d2942aa8576')
from dual;
Run Code Online (Sandbox Code Playgroud)
在一行中给出结果:
QUNhZTIzYjQxOTQ5ZGJjZmE4Y2QyYzhiMTE0YmI4MWFmNDo5MDlmMmVkYjNlOWI4YzdlOWM1NDVkMjk0MmFhODU3Ng==
Run Code Online (Sandbox Code Playgroud)
但是 base64 值包含它们是很常见的,无论如何解码都应该忽略它们。