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

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

Mary-Kate Olsen
发布: 2024-12-17 17:55:09
原创
752 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板