为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:win10
【CPU】:
【问题描述】*:我有个查询字段是逗号隔开的数据(A表,列如:1,2,3),是存放的varchar类型,此字段在B表用in查询无数据,sql是 select * from B where id in(select ids from A where id = 1);后续我尝试列转行,REGEXP_SUBSTR(ids,'[^,]+',1,level)和CONNECT BY level <= REGEXP_count(ids,',') + 1 解决,后面发现单个可以处理,我现在想放入列表却无法解决,我应该怎么写这个sql,列表sql为 select * from b where xx = xx,

试一下下面的办法,看看是否能够实现需求,如果表中记录数比较多,需要先测试一下实际运行耗时是否能接受
注意,SQL中的ID列是用作唯一主键,需要根据实际情况使用业务表中的主键列
SELECT ID ,LEVEL AS LVL ,SUBSTRING_INDEX(SUBSTRING_INDEX(VAL,',',LEVEL),',',-1) AS ONEVAL FROM (SELECT 1 AS ID,'A,B,C,D,E' AS VAL UNION ALL SELECT 2 AS ID,'AA,BB,CC,DD,EE' AS VAL UNION ALL SELECT 3 AS ID,'AAA,BBB,CCC,DDD,EEE' AS VAL ) CONNECT BY PRIOR ID = ID AND PRIOR CUR_TICK_TIME_EX IS NOT NULL AND LEVEL <= LENGTH(VAL) - LENGTH(REPLACE(VAL,',','')) + 1