Basically don't. You can do it, but it's clumsy:
Converting comma separated data in a column to rows for selection[
^]
A much, much better idea is to use use a separate table to store each value in your comma delimited data in it's own row, with a foreign key back to the original row data. And if the separated data items are row ids for another table - as they would appear - you can use a foreign key there as well.
You can then use JOIN to build your data really easily, and all processing becomes simpler. For example, John no longer needs the geo-name "2": how do you remove that from the string in SQL? What if he no longer needs 2 and 4? What if you need to remove geo-name 42 from all references? With a separate table to cross reference them, it all becomes trivial. When storing CSV data in a column, SQL's limited string handling becomes horribly apparent.