SQLite/MySQL使用LIKE或REGEXP来匹配字符串中的特殊内容词

SQLite/MySQL使用LIKE或REGEXP来匹配字符串中的特殊内容词,mysql,sqlite,mysql-workbench,Mysql,Sqlite,Mysql Workbench,我有一个具有这种结构的SQLite数据库表 data_table |id| string_id | ... |1 | 1 | ... |2 | 1/111-2 | ... |3 | 2/111-2 | ... |4 | 2/55-1 | ... “/”和“-”分隔符用于“字符串id”列的数据 当用户输入“1”时,结果应包含行号1、2和4。(不应包含行号3) 当用户键入2时,结果应包含行号2、3和4 我当前的查询语句是

我有一个具有这种结构的SQLite数据库表

    data_table
    |id| string_id | ...
    |1 | 1         | ...
    |2 | 1/111-2   | ...
    |3 | 2/111-2   | ...
    |4 | 2/55-1    | ...
“/”和“-”分隔符用于“字符串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-"

是否有其他有效且有价值的解决方案来替换此查询?

您可以使用嵌套的
子字符串索引(string\u id,'/',1)
类函数,并检查结果中是否存在您的值。如果您可以创建一个SQL FIDLE并提供更多的示例,那么我可以提供帮助。从您的SQL中,会感觉到您的解释不完整或SQL不正确。考虑示例:<代码> USELY值=1 < /COD>,是<代码> 1–<代码> > <代码> 2/1 < /代码>或<代码> /1 > /代码> StrugIdID的有效值?是的。user_value=1将返回1-、2/1或/1。但“string_id”中的数据不包含此格式。