【问题标题】:Query to get the string out of the column in a table查询以从表中的列中获取字符串
【发布时间】:2018-04-14 15:43:53
【问题描述】:

我希望将 MV 名称存储到来自表 dba_jobs 中的列 WHAT 的变量中。

我希望将 MV 名称 AP_OTHER_PERIODS_EMP_MV 存储在一个变量中,以便我可以将该变量用作过程中的参数来传递 MV 名称。

我尝试了以下方法,但它只能用于这个特定的工作,但我正在寻找一个可以用于所有工作的通用代码。

select substr(CAST(WHAT AS VARCHAR(4000)),33,23) as w from DBA_JOBS where BROKEN = 'N';

WHAT Col 中的内容是这样的:(dbms_refresh.refresh('"SYSTEM"."AP_OTHER_PERIODS_EMP_MV"');)

但我只需要从“AP_”开始的列中的MV名称。

图像包含 DBA_JOBS 表:

【问题讨论】:

  • 你能提供一个测试数据集吗?有更多应该考虑的行和应该避免的行会有所帮助。

标签: oracle oracle11g data-warehouse materialized-views


【解决方案1】:

你可以试试这个查询。请注意DBA_JOBS 中的WHAT 列已经是VARCHAR2(4000)。您无需再次CAST

SELECT REGEXP_SUBSTR(WHAT, 'dbms_refresh.refresh\(''.+\."(AP_.+)"''\)' ,1,1,'i',1)
FROM dba_jobs
WHERE BROKEN = 'N'
AND REGEXP_LIKE (WHAT,'dbms_refresh.refresh\(''.+\."AP_') ;

【讨论】:

    猜你喜欢
    • 2013-05-16
    • 2017-05-19
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2011-08-01
    相关资源
    最近更新 更多