选择' '来自TableA

时间:2017-10-18 17:02:42

标签: sql sql-server-2008

究竟是什么

select '' from TableA 

办?

当我在给定的表格上运行它时,我会返回表格中所有行的记录,这些记录显然是空白的,标题是“#No;(无列名称)'因为没有使用别名。 我已经看到这个查询被用作子查询而不存在'语句。

此查询在什么时候有用,以这种方式查询是一种好习惯吗?

例如,当我第一次看到它时,我认为它会返回一个空白行,但实际上它会返回表中的所有行,并且它们是空白的。

我环顾四周,却找不到答案。 谢谢

2 个答案:

答案 0 :(得分:2)

当检查表中是否存在某些内容时,通常选择任意值而不是实际列,因为它会对执行计划产生影响(如果选择实际列,则执行计划会将该列引入帐户,它可能需要更长的时间,即使您不使用该列)。

最常见的是,我看过1

IF EXISTS (SELECT 1 FROM MyTable WHERE SomeColumn > 10)

如果您只关心是否有任何行,您可以将查询短路而不是获取所有行...尽管我怀疑EXISTS语句会在任何行中停止无论如何都发现了一行。

IF EXISTS (SELECT TOP 1 '' FROM TableA)

答案 1 :(得分:0)

如果您想出于任何原因添加静态值作为查询的一部分

,则可以使用此语法

E.g。

SELECT 
    'SELECT TOP 10 * FROM '+name 
from sys.objects 
where type = 'U'

这将创建自动为数据库中的所有表创建查询