如何使用 PL/SQL-REGEXP_REPLACE 从字符串末尾删除 0D?

发布于 2024-11-28 18:29:27 字数 366 浏览 2 评论 0原文

我想在 Oracle 10g 上的 PL/SQL 中使用 REGEXP_REPLACE 来从字符串中删除尾随的 HEX-0D。我从这个问题找到了正则表达式。

在 Perl 中,其内容如下:

$output =~ tr/\x{d}\x{a}//d;  

或者

$output =~ s/\s+\z//;

How can Itranslate this to PL/SQL?

I want to use REGEXP_REPLACE in PL/SQL on Oracle 10g to remove the trailing HEX-0D from a string. I found the regex from this question.

In Perl it reads as follows:

$output =~ tr/\x{d}\x{a}//d;  

or

$output =~ s/\s+\z//;

How can I translate this to PL/SQL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

动听の歌 2024-12-05 18:29:27
/* PL/SQL */

declare
  in_str constant varchar2(30) := 'foo' || chr(13) || 'bar' || chr(13);
  out_str varchar2(30);
begin
  dbms_output.put_line('in_str = ' || utl_raw.cast_to_raw(in_str));

  select regexp_replace(in_str, chr(13) || '
, '') into out_str from dual;

  dbms_output.put_line('out_str = ' || utl_raw.cast_to_raw(out_str));
end;
/

/* SQL */

select utl_raw.cast_to_raw('foo' || chr(13) || 'bar' || chr(13)) as BEFORE from dual;

select utl_raw.cast_to_raw(
  regexp_replace('foo' || chr(13) || 'bar' || chr(13), chr(13) || '
, '')
) as AFTER from dual;

/* OUTPUT */

Session altered.

in_str = 666F6F0D6261720D
out_str = 666F6F0D626172

PL/SQL procedure successfully completed.

BEFORE
------------------------------------------------------------------------------
666F6F0D6261720D

AFTER
------------------------------------------------------------------------------
666F6F0D626172
/* PL/SQL */

declare
  in_str constant varchar2(30) := 'foo' || chr(13) || 'bar' || chr(13);
  out_str varchar2(30);
begin
  dbms_output.put_line('in_str = ' || utl_raw.cast_to_raw(in_str));

  select regexp_replace(in_str, chr(13) || '
, '') into out_str from dual;

  dbms_output.put_line('out_str = ' || utl_raw.cast_to_raw(out_str));
end;
/

/* SQL */

select utl_raw.cast_to_raw('foo' || chr(13) || 'bar' || chr(13)) as BEFORE from dual;

select utl_raw.cast_to_raw(
  regexp_replace('foo' || chr(13) || 'bar' || chr(13), chr(13) || '
, '')
) as AFTER from dual;

/* OUTPUT */

Session altered.

in_str = 666F6F0D6261720D
out_str = 666F6F0D626172

PL/SQL procedure successfully completed.

BEFORE
------------------------------------------------------------------------------
666F6F0D6261720D

AFTER
------------------------------------------------------------------------------
666F6F0D626172
睡美人的小仙女 2024-12-05 18:29:27

您还拥有 RTRIM 功能

select dump(a), dump(rtrim(a,chr(13))) from (select 'test'||chr(13) a from dual);

You also have the RTRIM function

select dump(a), dump(rtrim(a,chr(13))) from (select 'test'||chr(13) a from dual);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文