使用concat语句以后数据查询不出来,看执行计划是当成一个字符串处理了,这种情况下怎么操作


in里面改成这个
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(a.name,‘|’,b.help_topic_id+1),‘|’,-1) AS NAME
FROM (SELECT ‘76736850|15007442|90004909|90003852|90009555|90004922’ NAME ) a,
(SELECT 0 help_topic_id UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) b
WHERE b.help_topic_id < (LENGTH(a.name)-LENGTH(REPLACE(a.name,‘|’,‘’))+1);

这事怎么会是让数据库处理呢 :rofl:

这种我们一般是在程序里拼接好,数据库执行的时候都不需要拼接。