2019-07-17

Sqlite3,検索,複数カラム(フィールド)から同一の値があるレコードを簡略化して検索

データベース  Sqlite3
テーブル名  main
カラム(フィールド)  fn1, fn2, fn3, fn4

「 カラム fn1, fn2, fn3, fn4 に共通した値のレコードを検索する 」

fn1 = 99 , fn2 = 99, fn3 = 99, fn4 = 99 であるレコードを検索する

 ■ python3 プログラム

import sqlite3
db_name = "abc.sqlite"

conn = sqlite3.connect(db_name)
conect = conn.cursor()

sql = " SELECT * FROM  main  WHERE  fn1=99 or fn2=99 or fn3=99 or fn4=99 "

conect.execute(sql)
conn.close()


sql = を次のように簡略化できる

sql = " SELECT * FROM  main  WHERE  (fn1|fn2|fn3|fn4) in (99) "


値が fn1=99 または fn1=999 のときは

sql = " SELECT * FROM  main  WHERE  (fn1|fn2|fn3|fn4) in (99,999) "


値が fn1!=99 または fn1!=999 のときは

sql = " SELECT * FROM  main  WHERE  not (fn1|fn2|fn3|fn4) in (99,999) "


など、値が複数ある場合は便利な書式である。