如何在 SQL 中将分隔的 VARCHAR 列拆分为多个值并执行子字符串匹配
您的原始查询尝试过滤“AD_Ref_List”基于存储在“xx_insert”表中的分隔值列表的表。但是,Oracle 将逗号分隔的值视为一个字符串,从而导致没有匹配的行。
要解决此问题,请考虑以下方法:
使用字符串子字符串匹配分隔符:
将列值和分隔列表都包含在分隔符中并执行子字符串匹配。这可确保在分隔列表中找到精确匹配。
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
使用正则表达式拆分分隔列表:
从分隔列表中提取单个值使用正则表达式和子查询。然后,在主查询中执行基于值的匹配。
SELECT Value FROM AD_Ref_List WHERE AD_Reference_ID = 1000448 AND value IN ( SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL ) FROM xx_insert WHERE xx_insert_id = 1000283 CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' ) );
注意事项:
以上是如何在 SQL 中拆分定界 VARCHAR 列以进行子字符串匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!