我有两列访问和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
之后的部分。
答案 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')