1

質問のタイトルについてお詫びします。誰かがそれをよりよく説明できる場合は、編集してください。私は以下のようなMySQLselectステートメント(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の組み合わせであり、「数学」は確実に見つかり、「英語」はオプションです。私はこれを適切に説明したことを願っています...どんな助けもありがたいです!

編集:わかりました、多分私は明確にする必要があります...「英語」のオプションがある場合はそれを見つけたいのですが、ない場合はまだ「数学」のオプションを選択したいのですが'maths'オプションがないので、何も返さないようにします。ですから、それはどちらか一方だけではありません。

4

4 に答える 4

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 に答える
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 に答える
0

ちょうど試して

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

これは数学のレコードを提供します。英語はオプションなので、提供する必要はありません。

于 2012-10-16T11:12:55.850 に答える