Как удалить '\ r \ n' из строки Base64 в Oracle? - PullRequest
0 голосов
/ 15 ноября 2018

Я создал следующую функцию в 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; 

Мой ввод tobase64('ACae23b41949dbcfa8cd2c8b114bb81af4:909f2edb3e9b8c7e9c545d2942aa8576')

, и вывод, который я получаю, следующий, где новая строка добавляется после 64 символов.QUNhZTIzYjQxOTQ5ZGJjZmE4Y2QyYzhiMTE0YmI4MWFmNDo5MDlmMmVkYjNlOWI4 YzdlOWM1NDVkMjk0MmFhODU3Ng==

Может кто-нибудь подсказать, как удалить новую строку или любое изменение, требуемое в функции?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать 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; 

или пары:

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; 

, а затем в любом случае

select to_base64('ACae23b41949dbcfa8cd2c8b114bb81af4:909f2edb3e9b8c7e9c545d2942aa8576')
from dual;

дает результат в одной строке:

QUNhZTIzYjQxOTQ5ZGJjZmE4Y2QyYzhiMTE0YmI4MWFmNDo5MDlmMmVkYjNlOWI4YzdlOWM1NDVkMjk0MmFhODU3Ng==

Но обычно значения base64 включают их, и декодирование должно игнорировать их в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...