如何根据字符串组合获取数据?

时间:2018-06-18 12:07:10

标签: mysql mysqli

我有包含数据的表记录,

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

我不能超出我的期望。

请帮我创建此查询。

1 个答案:

答案 0 :(得分:2)

尝试在此使用REGEXP

SELECT *
FROM yourTable
WHERE
    title NOT REGEXP 'test' OR
    (title REGEXP 'test' AND title REGEXP '[[:<:]]thunder[[:>:]]');

enter image description here

Demo

这里的逻辑是查找标题不包含子串 test或包含test的任何记录,但也包含thunder。我的直觉反应是在test周围放置单词边界,但看起来你实际上只是想在标题中的任何地方找到子串test