在sql中使用like,通配符获取模式

时间:2012-10-09 07:48:41

标签: sql pattern-matching wildcard sql-like

我有两列访问和visit_sequence,

Example table

Visit         Visit_sequence
1             43:65:34:21:343
2             22:78:113:37
3             43:465:72:21:1187:542

The semi colon is present in the field.

现在,如果我想检查访问是否包含访问序列,其中包含数字43,45和21.我应该使用什么条件(最短条件)?

如果我写

 case when visit_sequence like '%:43:%:65:%:21:%'

 case when visit_sequence like '%43%:%65%:%21%'

这些肯定不会起作用。我不需要整个代码,只需要like之后的部分。

2 个答案:

答案 0 :(得分:1)

select *
  from visits
 where ':'+visit_sequence+':' like '%:43:%'
   and ':'+visit_sequence+':' like '%:65:%'
   and ':'+visit_sequence+':' like '%:21:%'

我希望你有一个小表,因为你的非规范化存储格式对于针对这个问题抛出的任何类型的查询都不会很好。

答案 1 :(得分:0)

如果您使用的是ORACLE,请试用REGEXP_LIKE

  select *
  from visits
  where REGEXP_LIKE (visit_sequence, '43:.*65:.*21')