如何解决是否有一个SQL查询将始终返回零结果?
根据DBMS,以下一项或多项将起作用:
-
SELECT NULL LIMIT 0
(Postgresql和MysqL语法)/SELECT TOP 0 1
(MS sql Server语法) -
SELECT NULL WHERE FALSE
(具有布尔类型的DBMS,例如Postgresql)SELECT NULL WHERE 1=0
(大多数DBMS)
SELECT NULL FROM
DUAL
我相信,对于Oracle,这些格式必须为形式,因为SELECT
没有某种FROM
子句就无法实现。不知道该版本LIMIT
/TOP
和WHERE
它将接受。
一个更精细的选择是创建一个(临时)表,并且不向其中插入任何行,这样可以为您提供任意数量的列,即使它们不包含任何值,这些列也将具有关联的类型:
-- Postgresql
CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
SELECT * FROM dummy;
-- MS sql Server
CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
SELECT * FROM #DUMMY;
在Postgresql中,您甚至可以创建一个没有列的表,从而使结果集具有 :
CREATE TEMP TABLE empty ();
SELECT * FROM empty;
另一种可能性是,如果DBMS具有返回集合的功能,则它们可能能够返回空集合。例如,再次以Postgresql为我所知,您可以将无效范围指定为generate_series()
:
SELECT * FROM generate_series(0,-1);
解决方法
如果有特定于MySQL / PostgreSQL / Oracle的解决方案,我会对它们全部感到好奇。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。