我有数据表记录,
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条记录仅包含test,第1条记录包含test但是有thunder。
如果任何带有'test'和'thunder'的记录存在,则接受此类记录,但如果纯粹使用'test'则忽略此类记录,
预期产量:
id, title
1, This is test the thunder
4, whatever
5, this is alkdjlsad asdjasjdlad
7, thunder
我想不出超出我的期望。
请帮我创建这个查询。
尝试在这里使用REGEXP
:
SELECT *
FROM yourTable
WHERE
title NOT REGEXP 'test' OR
(title REGEXP 'test' AND title REGEXP '[[:<:]]thunder[[:>:]]');
这里的逻辑是找到任何标题,其标题不包含子字符串test
,或包含test
,但也包含thunder
。我的直觉反应是在test
周围设置字边界,但看起来你实际上只是想在标题中的任何地方找到子字符串test
。