差分
このページの2つのバージョン間の差分を表示します。
technote:sqltips [2022/09/25 16:41] – 作成 kabe | technote:sqltips [2022/09/25 16:47] (現在) – kabe | ||
---|---|---|---|
行 1: | 行 1: | ||
====== SQLの小技 ====== | ====== SQLの小技 ====== | ||
+ | ===== SQLite 専用小技 ===== | ||
+ | [[https:// | ||
+ | |||
+ | ===== データベース一覧の取得 ===== | ||
+ | 現在開いているデータベースの一覧を取得します。 | ||
+ | < | ||
+ | pragma database_list | ||
+ | </ | ||
+ | |||
+ | ===== テーブル/ビュー/インデックス一覧の取得 ===== | ||
+ | 現在のデータベース内のテーブル、ビュー、インデックスの一覧を取得します。 | ||
+ | < | ||
+ | select * from sqlite_master | ||
+ | </ | ||
+ | |||
+ | ===== テーブル定義の取得 ===== | ||
+ | 指定したテーブルの定義を取得します。たとえば、tekiyo テーブルの定義を見たい場合は、table_name を tekiyo に置き換えてください。 | ||
+ | < | ||
+ | pragma table_info(table_name) | ||
+ | </ | ||
+ | |||
+ | ====== SQL 汎用小技 ====== | ||
+ | |||
+ | 一般的な SQL で使用可能な小技の紹介です。システムによっては、使えないことがあるかもしれません。 | ||
+ | |||
+ | ===== 特定パターンが複数フィールドのいずれかに部分一致するかどうか ===== | ||
+ | フィールド f1, f2, f3 のいずれかに ' | ||
+ | < | ||
+ | f1 like ' | ||
+ | </ | ||
+ | という式にしますが、左辺側で各フィールドの文字列を連結して | ||
+ | < | ||
+ | f1||f2||f3 like ' | ||
+ | </ | ||
+ | という式にまとめることもできます。 | ||
+ | |||
+ | ==== 応用 ==== | ||
+ | パターンと各フィールド値に存在しない文字をフィールド間に付加すれば、下記のように前方一致/後方一致/完全一致も可能です。もっとも、こうなると書きやすさは通常と大差なく、著しくリーダビリティが悪くなるので、あえてここまでする必要があるかどうかはかなり疑問ですね(^_^; | ||
+ | < | ||
+ | 前方一致: | ||
+ | 後方一致: | ||
+ | 完全一致: | ||
+ | </ | ||
+ | |||
+ | ==== 留意点 ==== | ||
+ | < | ||
+ | |||
+ | ===== 特定フィールドが複数パターンのいずれかに部分一致するかどうか ===== | ||
+ | フィールド f に ' | ||
+ | < | ||
+ | f like ' | ||
+ | </ | ||
+ | という式にしますが、正規表現演算子を使うと | ||
+ | < | ||
+ | f regexp ' | ||
+ | </ | ||
+ | と簡単な式で書けます。 | ||
+ | |||
+ | ==== 留意点 ==== | ||
+ | regexp は、SQLite の正規表現演算子です。DBMS ごとに正規表現演算子は異なりますので、システムのマニュアルを参照してください。 | ||
+ | |||
+ | また、古い DBMS では、正規表現に対応していないものがあります。Windows 版の SQLite3 データベースエンジンである sqlite3.dll も標準では regexp 演算子が実装されておらず、ユーザが自分で実装する必要があります。 | ||
+ |