I would use PHP to do the comparison.
$a = "1,45,89";
$b = "1,5,89";
$a_arr = explode(",", $a);
$b_arr = explode(",", $b);
$values_in_both = array_intersect($a_arr, $b_arr);
var_dump($values_in_both);
There are possible SQL queries you can use, but the one I put together is really messy. I combined two answers to create it.
Kickstart's Split string and
FBB's Intersect
SELECT temp.a_course_id from (
(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(student.course, ',', sub0.aNum), ',', -1) AS a_course_id
FROM student
INNER JOIN
(
SELECT 1 + units.i + tens.i * 10 AS aNum, units.i + tens.i * 10
AS aSubscript
FROM (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
) sub0
ON (1 + LENGTH(student.course) - LENGTH(REPLACE(student.course, ',', ''))) >= sub0.aNum
GROUP BY a_course_id)
UNION ALL
(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(package.courseid, ',', sub0.aNum), ',', -1) AS a_course_id
FROM package
INNER JOIN
(
SELECT 1 + units.i + tens.i * 10 AS aNum, units.i + tens.i * 10
AS aSubscript
FROM (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units
CROSS JOIN (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
) sub0
ON (1 + LENGTH(package.courseid) - LENGTH(REPLACE(package.courseid, ',', ''))) >= sub0.aNum
GROUP BY a_course_id))
AS temp GROUP BY a_course_id HAVING count(*) >= 2
You can probably reduce the clutter by saving the SELECT 0 from i UNION SELECT 1... portion, though I wanted to keep things close to the answers I referred to.