如何在SQLite中列出特定表的所有可用视图?

时间:2009-10-19 22:06:52

标签: sql database sqlite sqlitejdbc

我想访问Sqlite中任何特定表的所有特定视图。我知道我可以使用sqlite_master

获取数据库中所有可用表的列表
SELECT name from sqlite_master WHERE type='table'; 

使用

显示所有可用视图的列表
SELECT name from sqlite_master WHERE type ='view';

但我想查找特定表的所有可用视图。我怎么做 ?

2 个答案:

答案 0 :(得分:4)

无需使用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 %";

提供您尝试查找的视图符合典型模型。

答案 1 :(得分:1)

使用extension-functions.c中的charindex函数在sqlite_master中搜索Sql列以获取表的名称。

extension-functions.c (查看this page的底部)是一个用户提供的模块,它使用可加载扩展机制为SQL查询提供数学和字符串扩展功能。

您的最终查询应该看起来像这样(未经测试):

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