用查询中的值替换字段的一部分

用查询中的值替换字段的一部分,第1张

用查询中的值替换字段的一部分

也许不是最有效的方法,但是它是递归工作的(也就是说,如果它

crit_description
本身包含“占位符”,那么这些占位符也会被扩展。(第一个解决方案比下面的显示更简单,没有执行此递归步骤。)我添加的第三个示例输入。如果可以再清理一些,我将在以后再次发布。

注意:这假定

criteria_info
表中实际找到所有“占位符” 。我没有测试如果找不到它们会发生什么。OP陈述要求。

with     inputs ( criteria ) as (       select ' = True' from dual union all       select ' > '   from dual union all       select ' = '   from dual     ),     criteria_info ( crit_id, crit_description ) as (       select 1, 'Example 1' from dual union all       select 2, 'Example 2' from dual union all       select 3, 'Example 3' from dual union all       select 4, ' + '   from dual     ),     rec ( criteria, new_str ) as (       select  criteria, criteria         from  inputs    union all   select  r.criteria,     regexp_replace(r.new_str, '$d+', c.crit_description, 1, 1)         from  rec r inner join criteria_info c    on to_number(regexp_substr(r.new_str, '$(d+)', 1, 1, null, 1)) = c.crit_id         where regexp_substr(r.new_str, '$d+') is not null     )select criteria, new_strfrom   recwhere  regexp_substr(new_str, '$d+') is null;CRITERIA  NEW_STR--------- ------------------------------------ = True Example 1 = True >    Example 2 > Example 3 =    Example 1 = Example 2 + Example 33 rows selected.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5487443.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存