9

Sqliteの特定のテーブルのすべての特定のビューにアクセスしたいと思います。sqlite_masterを使用して、データベースで使用可能なすべてのテーブルのリストを取得できることを知っています

SELECT name from sqlite_master WHERE type='table'; 

そして、を使用して利用可能なすべてのビューのリスト

SELECT name from sqlite_master WHERE type ='view';

しかし、特定のテーブルで使用可能なすべてのビューを見つけたいと思います。それ、どうやったら出来るの ?

4

2 に答える 2

7

extension-functions.cを使用する必要はありません。「LIKE」演算子を使用するだけです。

SELECT name FROM sqlite_master WHERE type = 'view' and sql LIKE "%_tablename_%";

もちろん、他のテーブル名をサブストリングとして含むテーブル名、または一般的なSQL予約語(「here」や「rom」など)のサブストリングであるテーブル名がある場合は、誤った一致が発生します。次の方法で後者を排除できます。

SELECT name FROM sqlite_master WHERE type = 'view' AND sql LIKE "% FROM %tablename% WHERE %";

あなたが見つけようとしているビューを提供することは、典型的なモデルに準拠しています。

于 2010-02-11T00:06:49.060 に答える
1

charindexextension-functions.cの関数を使用してsqlite_master、テーブルの名前の Sql 列を検索します。

extension-functions.c (このページの下部を参照) は、ロード可能な拡張メカニズムを使用して、SQL クエリの数学および文字列拡張関数を提供するユーザー提供のモジュールです。

最終的なクエリは次のようになります (テストされていません)。

SELECT name from sqlite_master 
  WHERE type ='view' AND charindex(Sql, "tableName") > 0;
于 2009-10-19T22:26:35.660 に答える