SQLite/MySQL使用LIKE或REGEXP来匹配字符串中的特殊内容词
我有一个具有这种结构的SQLite数据库表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 我当前的查询语句是
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”中的数据不包含此格式。