检查SQLite中是否存在字段而不提取所有字段

时间:2011-10-19 22:49:21

标签: sql database sqlite

我正在编写一个数据库抽象层,它也抽象出一些不同的查询类型。其中一个被称为“field_exists” - 其目的应该是非常明显的。

我想为SQLite实现这一点。

我遇到的问题是我需要使用一个查询,该查询返回确认该字段存在的行,否则返回none。因此,我不能使用PRAGMA方法。

那么,我可以使用什么查询来检查SQLite中是否存在满足上述条件的字段?

编辑:我应该补充说,查询需要能够在PHP代码中运行(使用PDO)。

此外,查询应该看起来像这样(只适用于MySQL):

SHOW COLUMNS FROM table LIKE 'field'

2 个答案:

答案 0 :(得分:4)

尝试选择不存在的字段将返回异常,然后您可以捕获它并且不返回任何内容。

答案 1 :(得分:2)

使用.schema TABLENAME命令。它将告诉您为创建表而发出的命令。有关更多信息,请查询SQLite command shell documentation

如果您无权访问sqlite命令行,则始终可以查询sqlite_master表。假设您想知道用于创建表MyTable的命令。你发出这个:

select sql from sqlite_master where name='MyTable';

然后,它会为您提供用于创建表的sql命令。然后只需查看输出,看看你要查找的列是否在用于创建表的命令中。

更新2:

实际上比我上面发布的sql好,你可以使用这个:

PRAGMA table_info(*table_name*)

这将显示给定表格中的所有列及其类型和其他信息。