【问题标题】:How can I take substring in Oracle [closed]如何在 Oracle 中获取子字符串 [关闭]
【发布时间】:2013-10-02 01:18:00
【问题描述】:

我在 oracle 表中有一个行字符串。

Some text № 3694452 from 31.08.2013, stilltext 02.09.2013 18:16:27

如何获取“02.09.2013 18:16:27”(从行的末尾到 Stilltext 之后) 用于将其转换为日期。

【问题讨论】:

  • 你有没有尝试过?因为这是一种很好的做法。

标签: oracle substring


【解决方案1】:

假设日期字符串总是位于文本的末尾, 你可以像这样使用正则表达式:

select
  to_date(
    regexp_substr(your_column_name, '\d{2}.\d{2}.\d{4} \d{2}:\d{2}:\d{2}$'),
    'dd.mm.yyyy hh24:mi:ss')
from you_table_name;

【讨论】:

  • 非常感谢。所有我想要的。
【解决方案2】:

这假定日期总是在字符串的末尾并且格式是固定的。

with dummy as 
  (select '3694452 from 31.08.2013, stilltext 02.09.2013 18:16:27' data
   from dual)
select to_date(substr(data,length(data)-19), 'MM.DD.YYYY HH24:MI:SS') 
from dummy

有更优雅的方法可以使用正则表达式来做到这一点,但我假设这已经足够了。

SQL Fiddle demo here

【讨论】:

  • 非常感谢,我认为这是我需要的。在表达我有问题 - 如何在行尾抓取文本。我可以为验证写表达式,但在这种情况下不能写。但我也会尝试用这种方法找到。非常感谢。
  • btw length(data)-19 在这种情况下可以缩短为 -19
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 2021-09-30
  • 2014-03-20
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多