Mysql sql选择字符串与另一个表中定义的模式匹配的位置

Mysql sql选择字符串与另一个表中定义的模式匹配的位置,mysql,sql,Mysql,Sql,我有这样一个select语句: Select * from A where name like 'a%' or name like 'b%' or name like 'j%' or name like ... etc 是否可以将a%、b%、j%存储在某个表中,以便我可以更轻松地管理此列表并将查询转换为以下内容: Select * from A where name like (Select * from StringPatternToMatch) 试试这个: SELECT * FROM

我有这样一个select语句:

Select * from A where name like 'a%' or name like 'b%' or name like 'j%' or name like ... etc
是否可以将a%、b%、j%存储在某个表中,以便我可以更轻松地管理此列表并将查询转换为以下内容:

Select * from A where name like (Select * from StringPatternToMatch)
试试这个:

 SELECT * FROM A 
    JOIN StringPatternToMatch patt ON A.name LIKE '%' + patt.pattern + '%';

patt.pattern
替换为
stringpattern匹配中的列名称
您可以改为执行regexp搜索

select * 
  from A where name regexp '^[abjf]';
它比我们想要的大量查询更容易维护

'^[abjf]
表示匹配字符串的开头(
^
),后跟列表中的任何字符(
[abjf]
)。它不在乎那之后会发生什么


如果你发现名字以字母开头,只需在列表中添加更多字母即可

否,不可能将多个
like
子句包装在一个子句中。在比较(例如like)中使用结果的相关子查询可能不会返回超过1行。加入更好!a) 这不是连接字符串的方式。b) 即使是这样,您也只能搜索单个子字符串,而不是一堆不同的子字符串criteria@pala_,这是一个连接条件,即StringPatternToMatch中的每一行都将用作相似的模式。是的,我假设是内部的,而不是交叉的。它的语法仍然不完整,而且在添加或删除匹配的模式方面相对缺乏灵活性