我正在寻找ANSI-sql方法来执行Select查询而不返回任何记录,但填充了TDataSet的Fields结构.
我找到的方法是在任何查询中添加“where 1 = 0”,例如:
Select Id,name,province
from customers
where 1=0
这是一个相当简单的例子,当我必须处理用户输入的查询,然后解析它们,删除where子句(如果它已经有一个)并且替换为“1 = 0”时,它变得有点复杂.
如果用户输入的查询中的最后一个子句是where子句,那么根本没有问题,但是更复杂的查询如下:
select
c.lastname,sum(cs.amount)
from customersales cs
join customers c on c.idcustomer=cs.idcustomer
/* where 1=0 */
group by c.idcustomer,c.lastname
通过使用“where 1 = 0”方法,在前一个示例中插入它的唯一方法是使用一个相当强大的sql解析器(记住用户可以输入复杂查询,包括子查询,以及所有这些),谁能理解哪里包括这个字符串.
有谁知道更好的方法吗?我不能使用“限制1”,因为它必须采用ANSI方式.
最佳答案