我有一个简单的查询,如下所示:
SELECT * FROM CUSTOMERS WHERE CUSTID LIKE '~' AND BANKNO LIKE '~'
问题是,customers-table可能包含也可能不包含BANKNO列,具体取决于我无法控制的情况。但是,如果BANKNO不是CUSTOMERS中的列,则此查询失败。
所以我的问题是:可以测试BANKNO列是否存在,如果存在,可以将其包括在查询中,如果不排除此列呢?
查询确实必须灵活。
答案 0 :(得分:2)
sqlite3的SELECT中不存在的列将始终失败。
一个选择可能是将“完整” sql放在try
块中,如果出错,则执行另一个sql。
或者,您可以查询PRAGMA table_info('CUSTOMERS')
并查询结果以查看数据库中是否有相关的列。在https://www.sqlite.org/pragma.html#pragma_table_info处找到sqlite文档。
我确定还有其他选项,但是最重要的是您需要在执行SQL之前知道它仅包含有效的列名。