【SQL】UNIONについて
こんにちは。駆け出しエンジニアの竹前です。ここでは、SQLのUNION演算子について説明します。SQLについて勉強している方の参考になれば幸いです。UNIONとはUNION演算子は、複数のテーブルのデータを合わせて表示する場合に使います。複数のテーブルのデータを表示する場合、通常のSELECT文では、表示するテーブルの分だけ実行する必要があり、実行結果はテーブルごとに表示されます。UNIONでSE
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。駆け出しプログラマーの松下です!
WHEREで条件を指定するときに使うLIKEについて説明します。
SQLについて学び始めたばかりという方の参考になれば幸いです。
LIKEはあいまい検索に使います。WHERE句で条件を指定するときに使用し、○○を含んだ文字列があるかどうかを探せます。
SELECT * FROM テーブル名 WHERE カラム名 LIKE パターン;
WHEREの後ろに対象の列名を入れ、LIKEの後ろに探したい文字列のパターンを記述します。
パターンは、ワイルドカード文字と呼ばれる記号「%」か「_」と探したい文字とを組み合わせて使います。
例えば「%田」であれば最後の文字が「田」で終わる文字全てが当てはまり、「_田」は「田」で終わる2文字が当てはまるといった要領です。
では実際に見てみましょう。
Microsoft SQL Serverを使用し、あらかじめ作成した下記の"member"テーブルからのデータ取得をしてみます。
SELECT * FROM member WHERE name LIKE '%田';
SELECT * FROM member WHERE name LIKE '_田';
前者では取得できていた「久保田」が後者ではありません。
このように_は1文字を表すので、探したい文字列の文字数が決まっている場合に使用します。
一方で%は0文字以上と自由度が高いので、%と%で挟めばその文字を含むもの全てを探せます。
SELECT * FROM member WHERE name LIKE '%田%';
先程取得できていた名前に加え、田から始まる「田中」も取得できました。
指定した条件と一致しないものを探すときはNOT LIKEを使います。
SELECT * FROM member WHERE name NOT LIKE '%田%';
田を含まない名前だけが取得できました。
LIKE句でも条件が複数あるときはANDやORと組み合わせます。
SELECT * FROM member WHERE name LIKE '山%' AND name LIKE '%田%';
SELECT * FROM member WHERE name NOT LIKE '%田%' OR name LIKE '山%';
ANDでは両方の条件に当てはまらないといけないので、山で始まりかつ田が含まれる「山田」だけが取得されています。
ORはどちらかに当てはまればいいので、「NOT LIKE '%田%'」で田が含まれない名前が取得された後に、「LIKE '山%'」で山から始まる名前も取得されるので「山田」も表示されています。
LIKE句で特別な意味を持つ%や_ですが、これらを含む文字列を探したいときは¥を前につけてエスケープ処理をします。
また¥を探すときも同様に¥をつけます。
それぞれ「\%」「\_」「\\」のように使います。
そしてエスケープ処理をするために使われる文字はデフォルトでは¥ですが、後ろにESCAPEをつけ指定することで別の文字に変更することもできます。
下記の"member2"テーブルからのデータ取得をしてみます。
SELECT * FROM member2 WHERE name LIKE '%|_%' ESCAPE '|';
今回は¥の代わりに「|」に変更したので、|の後ろの_は普通の文字として探すことができます。
_がついているものだけが取得されました。
しかしSQLでの扱いが面倒になるので、データ設計の際に%や_が入らないようにするのが良いでしょう。
スペースも1文字として扱われます。
SELECT * FROM member2 WHERE name LIKE '____taro';
_を4つ並べたので、taroの前が4文字のものが取得されます。
スペースも1文字と数えられるためこのような結果となりました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート