【问题标题】:Replace spaces after a dot in the string替换字符串中点后的空格
【发布时间】:2019-12-22 21:26:11
【问题描述】:

我想在 Oracle 中编写一个查询来删除字符串中任何点之后的任何空格。 示例:

select 'My name is Pramod. I am writing a query. Today is AUG 16TH.' from dual;

请求的输出是:

My name is Pramod.I am writing a query.Today is AUG 16TH.

【问题讨论】:

  • 请向我们展示您的代码并指出您遇到问题的地方。
  • 在这种情况下,一个简单的REPLACE() 可以/应该可以解决问题。如果不需要,不要启动正则表达式引擎?
  • @RaymondNijland - 如果有时在一段时间后有两个(或更多)连续空格,那将无济于事。

标签: oracle regexp-replace


【解决方案1】:

一个简单的replace,基于您的简单示例:

SQL> with test (col) as
  2    (select 'My name is Pramod. I am writing a query' from dual)
  3  select replace(col, '. ', '.') result
  4  from test;

RESULT
--------------------------------------
My name is Pramod.I am writing a query

SQL>

不那么简单的例子:

SQL> with test (col) as
  2    (select 'My name is Pramod. I am writing a query' from dual union all
  3     select 'Right.   As @Mathguy said. It won''t work.always' from dual
  4    )
  5  select regexp_replace(col, '\. +', '.') result
  6  from test;

RESULT
--------------------------------------------------------------------------------
My name is Pramod.I am writing a query
Right.As @Mathguy said.It won't work.always

SQL>

【讨论】:

  • 如果有时一个句号后面有两个或多个连续的空格,那就不行了。
【解决方案2】:

试试这个:

select regexp_replace('My name is Pramod. I am writing a query. Today is AUG 16TH.','\.(\s)*','.') 
from dual

Sql 小提琴Demo

干杯!!

【讨论】:

  • 如果字符串如下所示:'我的名字是 Pramod。我正在写一个查询。今天是 8 月 16 日。我还必须在 "My" 之后处理额外的空格。我希望在每项工作之后只有一个空格,但在点之后没有空格。
  • 请粘贴字符串。根据样本数据给出答案
  • 它会起作用的。见sql fiddle demo
  • 是的,在 littlefoot 更新他的答案之前我已经给出了答案,标题为:“对于不那么简单的例子:”否则我不会重复答案。
  • 别管我的评论了,我没有注意到你的回答和他的编辑是在同一时间进行的......足够公平的+1来弥补我的评论......
【解决方案3】:

这也有效。

select regexp_replace( 'Right.   As @Mathguy said. It won''t work.always' ,'(\.)([[:space:]]*)', '.' )  from dual;

【讨论】:

  • 如果字符串是这样的:'对.正如 Mathguy 所说。它不会工作。总是',我想要'正确的。正如 Mathguy 所说。它不会起作用。总是'所以基本上每个单词后只有一个空格,但字符串中的任何点后都没有空格
  • “它是对的。也可以使用空格:\s” 我的评论更多地是为了寻找重复的答案,你可能会被否决..
  • 这个正则表达式 (\.)([[:space:]]*) 确实适用于您的问题场景
猜你喜欢
  • 2015-07-06
  • 2013-05-09
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2018-12-01
相关资源
最近更新 更多