【问题标题】:Trim specific string with leading zeros用前导零修剪特定字符串
【发布时间】:2020-06-08 18:52:32
【问题描述】:

我正在使用包含一个非常奇怪的列的表的 oracle 服务器上进行操作。 此列包含如下字符串:

  • [0X]+00000026
  • [22]+2222,555,6666
  • [WRI] 0000,00
  • FKI
  • 555

每个案例都有自己的结构。 现在我想将第一个示例转换为“26”。 第二个我想转换为“2222”。 最后一个到'555'。

您将如何构建它? 你见过类似的东西吗?

最好的问候

【问题讨论】:

  • “我想”是没用的。 为什么你想这样做?从输入到输出的规则是什么?
  • 感谢您的评论。你说的对!在第一个示例中,应删除所有带括号的内容以及“+”。应删除所有前导零。
  • 好的,这是第一个例子。为什么你不想要第三个的东西?第 5 个示例中没有括号也没有 +,但您想返回 555。您遵循什么模式?
  • 我需要输入不同的模式,就像你提到的那样。
  • 如果如您所评论的那样,那么您必须为每个案例编写一个新的 表达式,因为您无法根据任何已知的规则集来拟合它们i>输入到输出

标签: sql oracle trim


【解决方案1】:

我认为这是你想要的:

select replace(regexp_substr(str, '(^|[+])[0-9]+'), '+', '')

这是一个 dbfiddle。

【讨论】:

  • 非常感谢!我有第二列显示“1B”或“00”等状态。如何仅为状态为“00”的行添加您的方法?
  • @joshua 。 . .如果status = '00' 不起作用,那么您应该提出一个新问题。
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2015-07-25
  • 1970-01-01
  • 2021-04-16
相关资源
最近更新 更多