不要在SQLLite查询中的缺少列上失败

时间:2018-09-18 13:45:05

标签: sqlite

我有一个简单的查询,如下所示:

SELECT * FROM CUSTOMERS WHERE CUSTID LIKE '~' AND BANKNO LIKE '~'

问题是,customers-table可能包含也可能不包含BANKNO列,具体取决于我无法控制的情况。但是,如果BANKNO不是CUSTOMERS中的列,则此查询失败。

所以我的问题是:可以测试BANKNO列是否存在,如果存在,可以将其包括在查询中,如果不排除此列呢?

查询确实必须灵活。

1 个答案:

答案 0 :(得分:2)

sqlite3的SELECT中不存在的列将始终失败。

一个选择可能是将“完整” sql放在try块中,如果出错,则执行另一个sql。

或者,您可以查询PRAGMA table_info('CUSTOMERS')并查询结果以查看数据库中是否有相关的列。在https://www.sqlite.org/pragma.html#pragma_table_info处找到sqlite文档。

我确定还有其他选项,但是最重要的是您需要在执行SQL之前知道它仅包含有效的列名。

相关问题