我有包含数据的表记录,
id, title
1, This is test the thunder
2, This is test
3, This is Testing
4, whatever
5, this is alkdjlsad asdjasjdlad
6, test
7, thunder
我想以这样的方式查询,它将获取除2,3和6之外的所有记录 说明:第2和第3记录仅包含测试,第1条记录包含测试但是包含雷声。
如果有任何记录'测试'和'雷霆'存在接受这样的记录, 但如果纯粹用'测试'#39;然后忽略这样的记录,
预期输出:
id, title
1, This is test the thunder
4, whatever
5, this is alkdjlsad asdjasjdlad
7, thunder
我不能超出我的期望。
请帮我创建此查询。
答案 0 :(得分:2)
尝试在此使用REGEXP
:
SELECT *
FROM yourTable
WHERE
title NOT REGEXP 'test' OR
(title REGEXP 'test' AND title REGEXP '[[:<:]]thunder[[:>:]]');
这里的逻辑是查找标题不包含子串 test
或包含test
的任何记录,但也包含thunder
。我的直觉反应是在test
周围放置单词边界,但看起来你实际上只是想在标题中的任何地方找到子串test
。