【问题标题】:Oracle Apex multiple value in Column列中的 Oracle Apex 多个值
【发布时间】:2016-10-09 17:53:47
【问题描述】:

我的 Oracle Apex 页面中有一个带有逗号分隔值的文本字段(例如“F01C、F01D、G01A”)。这些值仅存储在我的表的一列中(表:HC_DEFHANDBUCH_B5 列 DRG)。

------
PK_ID   OPS     MDC         DRG                 OPS_FILL    MDC_FILL    YEAR
214098  1-100    2          C01A, C01B, C14Z    1-100       2           2017
214099  -       15          P67D                1-100       15          2017
214100  1-204.2 15          P67D                1-204.2     15          2017
214101  1-204.3 15          P67D                1-204.3     15          2017
-------

我尝试在交互式报告中运行查询,以从表 HC_GDRG_FPK 中选择 PK_ID '214098' 的所有 DRG,每个 DRG 有一行:

Select * FROM HC_GDRG_FPK a
WHERE a.DRG IN (Select '(''' || REPLACE(b.DRG,', ',''', ''') || ''')' FROM HC_DEFHANDBUCH_B5 b WHERE b.PK_ID='214098')
AND a.Jahr='2017'

有没有人知道如何让它工作?我让它在单个值上工作。

提前致谢。

【问题讨论】:

  • 在列中存储逗号分隔值违反了最基本的规范化规则。这将使工作变得更加困难。正确的方法是创建一个子表,其中三个值有三行。您确定不想修复您的数据模型吗?
  • 我把这个问题看了三遍,我还是不明白你在做什么。你能用简单的英语解释一下这个作业吗? (顺便说一句,如果列是年份,Jahr 将不起作用!)
  • @Justin Cave:你是对的。一张儿童桌可以帮助我试试这个。数据模型的问题在于这些数据来自公共来源。会跟进。
  • @mathguy:这与 APEX 的功能更相关。对 SQL 没有那么多。如果您熟悉 APEX 但仍然不明白,我会修改我的问题。

标签: oracle oracle-apex oracle-apex-5


【解决方案1】:

我终于可以用正则表达式解决它了。 @Justin Cave:感谢您的提示。

select * from HC_GDRG_FPK where DRG in (
select regexp_substr(:P39_CALL_DRGS,'[^,]+', 1, level) from HC_DEFHANDBUCH_B5
connect by regexp_substr(:P39_CALL_DRGS, '[^,]+', 1, level) is not null )
AND Jahr ='2017'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多