【发布时间】:2016-05-25 01:17:17
【问题描述】:
我有一个名为 col_mapping 的 Oracle 表,其中该表中的列具有另一个表中列的列值。
表格数据示例:col_mapping
ID DESCR COL_VALS
------------------------------
1 LABEL COL_1
2 NAME_ADDR COL_2:COL_3
3 SALARY COL4
基于上表,我现在想遍历 col_mapping 中的每条记录,并在另一个名为 other_tab 的表中使用 COL_VALS 作为我的 WHERE 条件的一部分,即:
select 'Y'
from other_tab
where COL_1 = 'whatever1';
select 'Y'
from other_tab
where (COL_2 = 'whatever2' or COL_3 = 'whatever2');
and finally:
select 'Y'
from other_tab
where COL_4 = 'whatever4';
我基本上想将 COL_VALS 拆分为 where 条件,其中有多个值冒号分隔,如上示例将其转换为 OR 条件。
【问题讨论】:
-
这对 SQL 中的一切都是如此。您应该考虑完全重新设计它。
-
你试过Dynamic SQL吗?
-
@juergend 非常正确,但我纯粹将其用作我需要处理的映射表的一部分。
-
@Hawk 将对此进行调查,但我如何最好地将冒号分隔的值拆分出来以便在动态 SQL 中使用?