Как я уже упоминал в предыдущем комментарии, лучший способ сделать это с правильным дизайном базы данных - вместо строки, такой как (11, '12,121,20')
, иметь три строки (11,12)
, (11,121)
и (11,20)
, поэтомупростой WHERE roomno = 121
может быть использован.Хранить ваши данные таким образом, чтобы СУБД была рассчитана на работу, намного проще, чем то, что вы делаете, пытаясь заставить квадратный колышек в круглое отверстие.
Однако, если вы можете 'Почему-то исправить ваши данные ... Список чисел, разделенных запятыми, очень близок к массиву чисел JSON, а sqlite имеет приличную поддержку для работы с JSON ...
Итак, с учетом этой таблицы:
CREATE TABLE rooms(id INTEGER, roomno TEXT);
INSERT INTO rooms VALUES (9, '108'), (11, '12,121,205'), (12, '12,205')
, (16, '121'), (17, '121,205'), (20, '205');
этот запрос
SELECT *
FROM rooms AS r
WHERE 121 IN (SELECT j.value FROM json_each('[' || r.roomno || ']') AS j)
ORDER BY id
дает вам
id roomno
---------- ----------
11 12,121,205
16 121
17 121,205