SELECT SUM(LENGTH(REPLACE(REPLACE(COALESCE(course,''),',',''),'course',''))) AS staff_nums
FROM cultivate_tb

不是很喜欢这么写代码,太功利了感觉?还是下面这个逻辑比较舒服。

SELECT SUM(if_course1) + SUM(if_course2) + SUM(if_course3) AS staff_nums FROM ( SELECT staff_id, CASE WHEN course LIKE '%course1%' THEN 1 ELSE 0 END AS if_course1, CASE WHEN course LIKE '%course2%' THEN 1 ELSE 0 END AS if_course2, CASE WHEN course LIKE '%course3%' THEN 1 ELSE 0 END AS if_course3 FROM cultivate_tb )t0