からくりブログ

株式会社からくり社員のブログです

SQL文で複数の部分一致をきれいに書きたい。

SQL文の話です。 データベース(DB)やアプリの導入に関しては、誰かがやってくれるはず! と他力本願でいきたいと思います。 今回は言いたいことは、SQL文で 「複数一致 (部分) が OR で連結するしかできない。」 です。 (OR 以外でできるよという方がいらっしゃいましたら、  ぜひ教えて下さい。お願い致します。切実。) 「複数一致 (部分) 」ってなんぞやと思う方は、 下記のおさらいを見て(読んで?)ください。 ----------おさらい---------- DB情報 バージョン : Oracle9i 9.2.0.8 オブジェクト名: data_table |SID |スキーマ|タイプ|カラム| |TEST| USER_A | TABLE|ID, dName, dValue| |ID|dName|dValue| |1|ABCDEF|100| |2|DEFGHI|1000| |3|GHIABC|10| |4|ABCGHI|10| |5|GHIDEF|100| |6|DEFABC|1000| ■ レコードの抽出クエリ DBのレコードをある特定の条件で抽出する。         SELECT (カラム名) FROM (オブジェクト名) WHERE (条件) ■ 完全一致 ・演算子「=」を使用する。 式         SELECT * FROM data_table         WHERE dName = ‘ABCDEF’ 結果 |ID|dName|dValue| |1|ABCDEF|100| ■ 部分一致 ・演算子「like」とワイルドカード「%」を使用する。 (ワイルドカードを用いらないと、完全一致となります。) (「*」はlikeのワイルドカードにならない。(このVerのOracleだから?)) 式         SELECT * FROM data_table         WHERE dName = ‘ABC%’ 結果 |ID|dName|dValue| |1|ABCDEF|100| |4|ABCGHI|10| ■ 複数一致 (完全) ・演算子「IN」を使用する。 ・演算子「AND」を使用する。 式         SELECT * FROM data_table         WHERE dName IN (‘DEFGHI’, ‘ABCGHI’, ‘DEFABC’) 結果 |ID|dName|dValue| |2|DEFGHI|1000| |4|ABCGHI|10| |6|DEFABC|1000| 式         SELECT * FROM data_table         WHERE dValue = 100            AND dName like ‘%I%’ 結果 |ID|dName|dValue| |5|GHIDEF|100| ■ 複数一致 (部分) ・演算子「OR」を使用する。 式         SELECT * FROM data_table         WHERE ID > 4            OR dValue = 1000 結果 |ID|dName|dValue| |2|DEFGHI|1000| |5|GHIDEF|100| |6|DEFABC|1000| ーーーーー

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>