PythonでSQLのLIKE・BETWEEN・INなどの演算子を活用する方法|初心者向け完全ガイド
生徒
「PythonでSQLを使って検索しているんですが、条件を細かく指定する方法がよく分かりません…」
先生
「そんなときに便利なのが、SQLの演算子です。LIKEやBETWEEN、INを使うと検索がとても楽になります。」
生徒
「英語ばかりで難しそうですが、初心者でも使えますか?」
先生
「考え方は日常の探し物と同じです。順番に見ていきましょう。」
1. SQL演算子とは何か
SQL演算子とは、データベースからデータを取り出すときに使う条件指定の道具です。PythonでSQLデータベース操作を行う場合でも、検索条件はSQL演算子で指定します。
例えば「名前が山で始まる人」や「金額が千円から三千円の間」といった条件を、人に説明するように指定できるのが特徴です。初心者でも、意味を一つずつ覚えれば安心して使えます。
2. LIKE演算子で文字列をあいまい検索する
LIKE演算子は、文字列の一部が一致しているデータを探すために使います。完全一致ではなく、「だいたい合っている」データを探すときに便利です。
本棚から「Python」と書かれた本を探すときに、タイトルの一部だけを見て探すようなイメージです。
import sqlite3
conn = sqlite3.connect("sample.db")
cursor = conn.cursor()
cursor.execute("""
SELECT name
FROM users
WHERE name LIKE '山%'
""")
for row in cursor.fetchall():
print(row[0])
3. パーセント記号とアンダースコアの意味
LIKE演算子では、特別な記号を使います。パーセント記号は「何文字でもよい」という意味を持ちます。前に付ければ「後ろが何でもよい」、後ろに付ければ「前が何でもよい」という指定になります。
一方、アンダースコアは「一文字だけ何でもよい」という意味です。これにより、文字数を意識した検索も可能になります。
4. BETWEEN演算子で範囲を指定する
BETWEEN演算子は、数値や日付などの範囲を指定するときに使います。「以上かつ以下」という条件を、短い言葉で表現できます。
価格帯で商品を探したり、特定の期間のデータを取得したりするときに役立ちます。
cursor.execute("""
SELECT product_name, price
FROM products
WHERE price BETWEEN 1000 AND 3000
""")
for row in cursor.fetchall():
print(row)
5. IN演算子で複数の候補から選ぶ
IN演算子は、複数の値の中から一致するものを探す演算子です。「この中のどれかに当てはまるもの」という条件を一度に指定できます。
チェックリストから条件に合うものだけを選ぶような感覚で使えます。
cursor.execute("""
SELECT name
FROM users
WHERE prefecture IN ('東京', '大阪', '愛知')
""")
for row in cursor.fetchall():
print(row[0])
6. PythonからSQL演算子を使うときの書き方
Pythonでは、SQL文を文字列として書き、データベースに送ります。そのため、演算子の書き方自体はSQLと同じです。
初心者のうちは、SQL文をそのまま書いてからPythonに組み込むと、混乱しにくくなります。
7. 演算子を組み合わせた実践例
LIKEやBETWEEN、INは組み合わせて使うこともできます。条件を複数指定することで、より絞り込んだ検索が可能になります。
ただし、最初は一つずつ試しながら、結果を確認することが大切です。
cursor.execute("""
SELECT name, price
FROM products
WHERE name LIKE '%本%'
AND price BETWEEN 500 AND 2000
""")
for row in cursor.fetchall():
print(row)
8. 初心者が混乱しやすいポイント
SQL演算子でよくある間違いは、条件の意味を取り違えることです。特にLIKEの記号の位置や、BETWEENが両端を含む点は注意が必要です。
紙に条件を書き出して、「何を探したいのか」を日本語で確認してからSQLを書くと、理解が深まります。