【问题标题】:Data field - search and write value in new data field (Oracle)数据字段 - 在新数据字段中搜索和写入值 (Oracle)
【发布时间】:2020-06-19 08:55:35
【问题描述】:

抱歉,我不知道如何用标题来描述它。

通过查询(例如:Select SELECT PKEY, TRUNC (CREATEDFORMAT), STATISTICS FROM BUSINESS_DATA WHERE STATISTICS LIKE '% business_%'),我可以显示所有包含值“business_xxxxxx”的数据。

例如,数据字段可以有以下内容:c01_ad; concierge_beendet; business_start;或者skill_my; pre_initial_markt; business_request; topIntMaster; concierge_start; c01_start;

现在是否可以在仅临时输出另一列中的相应值?

所以输出看起来像这样,例如?

PKEY | TRUNC(CREATEDFORMAT) | NEW_STATISTICS
1    |   13.06.2020         | business_start
2    |   14.06.2020         | business_request

这意味着删除所有不以business_xxx开头的东西?这在 SQL 查询中可能吗?我认为,RegEx 不是正确的。

【问题讨论】:

  • 我不明白你想要什么,你已经只显示了以business_xxx开头的人,你想要的结果实际上是你查询的结果
  • 假设 STATISTICS 值包含 多个business_%:希望如何处理该输出?

标签: sql regex oracle select oracle-apex


【解决方案1】:

我想你想要:

select
    pkey,
    trunc(createdformat) createddate,
    regexp_substr(statistics, 'business_\S*') new_statistics
from business_data
where statistics like '% business_%'

【讨论】:

  • 是的,看起来不错!前部被切断。但是您要查找的单词后面仍然有文字。也可以剪掉吗?搜索到的单词“business_”要么在开头,要么在中间,要么在结尾,并且总是带有“;”与其他值分开。我会继续努力的。你给了我一个很好的建议。我最近才知道 RegEx。
  • @smajo: 'business_\S*' 为您提供从 'business_' 到下一个空格的所有内容,这就是我理解您想要什么的方式。您可能还想尝试'business_\w+'
  • 太棒了!我只是在regextester中搜索并尝试过。但就是这么简单。酷
【解决方案2】:

您也可以使用以下regexp_substr

SQL> select regexp_substr(str,'business_[^;]+') as result
  2  from
  3  --sample data
  4  (select 'skill_my; pre_initial_markt; business_request; topIntMaster; concierge_start; c01_start;' as str from dual
  5  union all
  6  select 'c01_ad; concierge_beendet; business_start;' from dual);

RESULT
--------------------------------------------------------------------------------
business_request
business_start

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多