首页 >数据库 >mysql教程 >如何拆分定界 VARCHAR 列以实现高效的 SQL 查询?

如何拆分定界 VARCHAR 列以实现高效的 SQL 查询?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-17 17:55:09740浏览

How to Split a Delimited VARCHAR Column for Efficient SQL Queries?

在 SQL 中将 VARCHAR 列拆分为多个值

问题:

检索值时从使用 IN 子句的 VARCHAR 列,Oracle 将分隔列表转换为单引号字符串,防止子查询匹配单个值。

解决方案 1:

使用相同的分隔符将分隔列表值包含在 IN 子句中在 VARCHAR 列中。例如,不要使用 AD_Ref_List.Value IN ('CO','VO'),而是使用 AD_Ref_List.Value IN (',' || 'CO' || ',' || 'VO' || ',') .

解决方案 2(替代Where子句):

使用常规基于表达式的技术,使用 REGEXP_SUBSTR 函数从指定级别的分隔列表中提取单个值。例如,以下查询使用递归来拆分分隔列表:

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, '[^,]+')
);

以上是如何拆分定界 VARCHAR 列以实现高效的 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn