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

问题描述 投票:0回答:1

我有数据表记录,

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

我想不出超出我的期望。

请帮我创建这个查询。

mysql mysqli
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.