SQLite / MySQL использует LIKE или REGEXP для сопоставления слов со специальным содержимым в строке - PullRequest
0 голосов
/ 03 мая 2018

У меня есть таблица базы данных SQLite с этой структурой.

    data_table
    |id| string_id | ...
    |1 | 1         | ...
    |2 | 1/111-2   | ...
    |3 | 2/111-2   | ...
    |4 | 2/55-1    | ...

Разделители «/» и «-» используются для данных столбца «string_id».

Когда пользователь вводит «1», результат должен содержать строки с номерами 1,2 и 4. (не должен содержать строки с номером 3)

Когда пользователь вводит 2, результат должен содержать строки с номерами 2,3 и 4.

Мой текущий запрос -

SELECT * FROM data_table WHERE 
string_id = "user_value" OR 
string_id LIKE "%-user_value" OR 
string_id LIKE "%/user_value" OR 
string_id LIKE "user_value-%" OR 
string_id LIKE "user_value/%" OR 
string_id LIKE "%-user_value-%" OR 
string_id LIKE "%/user_value/%" OR 
string_id LIKE "%-user_value/" OR 
string_id LIKE "%/user_value-"

Есть ли другое эффективное и достойное решение для замены этого запроса?

...