【问题标题】:How do I list all the available views of a particular table in SQLite?如何在 SQLite 中列出特定表的所有可用视图?
【发布时间】:2009-10-19 22:06:51
【问题描述】:
我想访问 Sqlite 中任何特定表的所有特定视图。我知道我可以使用 sqlite_master 获取数据库中所有可用表的列表
SELECT name from sqlite_master WHERE type='table';
所有可用视图的列表使用
SELECT name from sqlite_master WHERE type ='view';
但我想查找特定表的所有可用视图。我怎么做 ?
【问题讨论】:
标签:
sql
database
sqlite
sqlitejdbc
【解决方案1】:
无需使用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 %";
提供您试图找到的符合典型模型的视图。
【解决方案2】:
使用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;