You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle管道分隔列数据筛选需求:按指定条件提取记录

Oracle数据筛选解决方案

数据表结构与样本数据

Column1Column2
ABC|DEF|GHI|JKL|XYZY|Y|N|N|Y
ABC|JKL|XYZY|Y|N
GHI|XYZY|Y
GHI|JKLN|Y

筛选规则

提取满足以下条件的记录:Column1中包含ABC、DEF、JKL或XYZ任意一个值,且Column2中对应位置的取值为Y。

实现SQL语句

WITH split_data AS (
    SELECT 
        t.Column1,
        t.Column2,
        REGEXP_SUBSTR(t.Column1, '[^|]+', 1, level) AS col1_item,
        REGEXP_SUBSTR(t.Column2, '[^|]+', 1, level) AS col2_item
    FROM your_table t
    CONNECT BY 
        level <= REGEXP_COUNT(t.Column1, '\|') + 1
        AND PRIOR t.Column1 = t.Column1
        AND PRIOR SYS_GUID() IS NOT NULL
)
SELECT DISTINCT Column1, Column2
FROM split_data
WHERE col1_item IN ('ABC', 'DEF', 'JKL', 'XYZ')
  AND col2_item = 'Y';

逻辑说明

  1. 拆分字符串:通过REGEXP_SUBSTR和递归CONNECT BY,将Column1和Column2按分隔符|拆分成逐行的对应项,保证每个位置的元素一一匹配。
  2. 匹配筛选条件:在拆分后的数据集里,筛选出目标项(ABC/DEF/JKL/XYZ)且对应位置为Y的条目。
  3. 去重返回原记录:用DISTINCT确保原表中符合条件的记录仅返回一次,避免因多个位置满足条件导致重复输出。

预期结果

执行上述SQL后,将返回所有样本记录(每条记录均满足至少一个筛选条件):

Column1Column2
ABC|DEF|GHI|JKL|XYZY|Y|N|N|Y
ABC|JKL|XYZY|Y|N
GHI|XYZY|Y
GHI|JKLN|Y

内容的提问来源于stack exchange,提问作者hanuma sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:11:01