设为首页 - 加入收藏 云计算网_泰州站长网 (http://www.0523zz.com)- 中小站长必上的网站 - 聚焦泰州站长前沿资讯!
热搜: 芯片 2008 1000 iphone
当前位置: 主页 > 站长学院 > MySql教程 > 正文

ANSI Sql查询强制返回0条记录

发布时间:2021-03-30 22:11 所属栏目:[MySql教程] 来源:网络整理
导读:我正在寻找ANSI-SQL方法来执行Select查询而不返回任何记录,但填充了TDataSet的Fields结构. 我找到的方法是在任何查询中添加“where 1 = 0”,例如: Select Id,name,provincefrom customerswhere 1=0 这是一个相当简单的例子,当我必须处理用户输入的查询,然

我正在寻找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方式.

最佳答案 如何在用户的SELECT周围添加自己的SELECT?

SELECT * FROM (
select
  c.lastname,c.lastname
) x
WHERE 0=1

编辑:ORDER BY不适用于该解决方案,但由于没有行,您可以尝试在必要时从查询中删除它.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章