首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle PL/SQL :从字符串中删除“空格字符”

Oracle PL/SQL :从字符串中删除“空格字符”
EN

Stack Overflow用户
提问于 2011-04-01 04:23:21
回答 6查看 161.3K关注 0票数 23

在我的Oracle 10g数据库中,我想删除“空格字符”(空格、制表符、回车符...)从表字段的值。

TRANSLATE()是一条可行的道路吗?例如,如下所示:

MY_VALUE := TRANSLATE(MY_VALUE,
  CHR(9) || CHR(10) || CHR(11) || CHR(12) || CHR(13) || ' ', '');

或者有没有更好的替代方案(比如PHP PCRE中的[:space:] )?

谢谢你的任何建议。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-01 04:30:21

我会选择regexp_replace,尽管我不能百分之百确定这在PL/SQL中是否可用

my_value := regexp_replace(my_value, '[[:space:]]*',''); 
票数 45
EN

Stack Overflow用户

发布于 2013-07-17 02:07:55

更短的版本:

REGEXP_REPLACE( my_value, '[[:space:]]', '' )

将是:

REGEXP_REPLACE( my_value, '\s')

以上两条语句都不会删除"null“字符。

要删除“null”,请使用replace将语句括起来

如下所示:

REPLACE(REGEXP_REPLACE( my_value, '\s'), CHR(0))
票数 21
EN

Stack Overflow用户

发布于 2011-04-01 04:38:11

由于您熟悉正则表达式,因此可能需要使用REGEXP_REPLACE函数。如果您想要消除任何与:space: POSIX类匹配的内容

REGEXP_REPLACE( my_value, '[[:space:]]', '' )


SQL> ed
Wrote file afiedt.buf

  1  select '|' ||
  2         regexp_replace( 'foo ' || chr(9), '[[:space:]]', '' ) ||
  3         '|'
  4*   from dual
SQL> /

'|'||
-----
|foo|

如果您想为每组连续的空格字符保留一个空格,只需将+添加到正则表达式中,并使用空格作为替换字符。

with x as (
  select 'abc 123  234     5' str
    from dual
)
select regexp_replace( str, '[[:space:]]+', ' ' )
  from x
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5505835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档