HumanTable
name LangCodeList
---- ------------
aaaa 1,2,3,4,5
bbbb 1
cccc 1,3,5
dddd 2,3,4
eeee 4,5
LangTable
LangCode LangName
-------- ---------
1 C++
2 C#
3 Python
4 Java
5 PHP
C#やPythonといった検索ワードが指定されるので
その言語のコードを、LangCodeListに持つ人のnameを表示する
出力結果 (Pythonが検索ワードの場合)
name
----
aaaa
cccc
dddd
create table HumanTable(
name varchar(4),
LangCodeList varchar(100));
insert into HumanTable
values('aaaa' , '1,2,3,4,5'),
('bbbb' , '1'),
('cccc' , '1,3,5'),
('dddd' , '2,3,4'),
('eeee' , '4,5');
create table LangTable(
LangCode int,
LangName varchar(10));
insert into LangTable
values(1,'C++'),
(2,'C#'),
(3,'Python'),
(4,'Java'),
(5,'PHP');
-- ■■■ Exists述語を使う方法 ■■■
select name
from HumanTable a
where exists(select 1 from LangTable b
where b.LangName = 'Python'
and Find_In_Set(b.LangCode , a.LangCodeList));
-- ■■■ スカラーサブクエリを使う方法 ■■■
select name
from HumanTable a
where Find_In_Set((select b.LangCode
from LangTable b
where b.LangName = 'Python') , a.LangCodeList);
Exists述語を使う方法が 分かりやすいと思います。