Mysql sql选择字符串与另一个表中定义的模式匹配的位置
我有这样一个select语句: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 * 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中的每一行都将用作相似的模式。是的,我假设是内部的,而不是交叉的。它的语法仍然不完整,而且在添加或删除匹配的模式方面相对缺乏灵活性