1

为问题标题道歉,如果有人可以更好地解释它,请进行编辑。我有一个 MySQL 选择语句(我通过 Perl dbi 运行),如下所示:

select skills from my_table where (skills like '%maths%' or skills like '%english%');

这将运行,但它选择像“数学”这样的技能或像“英语”这样的技能。我想拥有它,所以它肯定会找到“数学”,如果有意义的话,也许会找到“英语”。

我认为它有点像当你有 时and,它只返回带有这些元素的结果。所以如果我做了:

select skills from my_table where (skills like '%maths%' and skills like '%english%');

它会返回具有两种技能的结果。

因此,如果可能的话,我想要的是两个 sql 的组合,“数学”是一个明确的发现,而“英语”是可选的。我希望我已经正确解释了这一点......任何帮助表示赞赏!

编辑:好的,也许我确实需要澄清......如果有“英语”选项,我希望找到它,但如果没有,我希望它仍然选择“数学”选项,但如果没有“数学”选项,那么我希望它什么也不返回。所以它不仅仅是一个或另一个。

4

4 回答 4

1

这将返回keyField所有具有数学技能的行,以及一个额外的列来显示他们是否也有英语技能。

select   keyField,  
        'Maths' mathsSkill,
        CASE WHEN skills LIKE '%english%' THEN 'English' else 'No English' END englishSkill
from    my_table 
where   skills like '%maths%'
于 2012-10-16T11:15:32.257 回答
1

I would like to have it so it definitely finds 'maths', and maybe finds 'english' if that makes sense.如果这有道理,你是什么意思。

我认为您只需要执行以下操作

select skills from my_table where (skills like '%maths%')
于 2012-10-16T11:12:41.750 回答
1

但如果“英语是可选的”,您可以简单地将其删除:

select skills 
from my_table 
where skills like '%maths%'
于 2012-10-16T11:12:52.677 回答
0

试试看嘛

select skills from my_table where skills like '%maths%';

这将给出数学记录。由于英语是可选的,因此您无需提供

于 2012-10-16T11:12:55.850 回答