sql select其中string匹配另一个表中定义的模式

时间:2015-04-27 22:06:30

标签: mysql sql

我有一个像这样的选择语句:

Select * from A where name like 'a%' or name like 'b%' or name like 'j%' or name like ... etc

是否可以将%,b%,j%存储在某个表格中,以便我可以更轻松地管理此列表并将查询转换为以下内容:

Select * from A where name like (Select * from StringPatternToMatch)

2 个答案:

答案 0 :(得分:0)

试试这个:

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

patt.pattern替换为StringPatternToMatch

中列的名称

答案 1 :(得分:0)

您可以改为进行正则表达式搜索。

select * 
  from A where name regexp '^[abjf]';

维护的查询比大量或类似的更容易。

demo here

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

如果您找到以它们开头的名称,只需在列表中添加更多字母即可。