2009-10-19 59 views
7

我想訪問Sqlite中任何特定表的所有特定視圖。我知道我可以使用SQLITE_MASTER如何列出SQLite中特定表的所有可用視圖?

SELECT name from sqlite_master WHERE type='table'; 

和所有可用的視圖中使用

SELECT name from sqlite_master WHERE type ='view'; 

列表獲取數據庫中所有可用的表的列表中,但我想找到所有可用的意見一個特定的表格。我怎麼做 ?

回答

1

使用extension-functions.c中的charindex函數在sqlite_master中搜索Sql列以獲取表的名稱。

伸展functions.c(看的this page底部)是用戶提供的模塊,提供的數學和串擴展函數爲SQL查詢,使用加載擴展機制。

你最終的查詢應該是這個樣子(未測試):

SELECT name from sqlite_master 
    WHERE type ='view' AND charindex(Sql, "tableName") > 0; 
3

無需使用延長-functions.c;只需使用「LIKE」操作符:

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

你會得到錯誤匹配,當然,如果您有包含其他表名作爲子,或者是常見的SQL保留字子(喜歡這裏」表名「或」rom「)。您可以通過以下方式消除後者:

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

提供您正在嘗試查找的視圖符合典型模型。

相關問題