如何从oracle的Base64字符串中删除'\r\n'?

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==

有人可以建议我如何删除新行或函数中所需的任何更改吗?

Ale*_*ole 6

您可以使用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 值包含它们是很常见的,无论如何解码都应该忽略它们。