Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果行的结果为空,则为空列_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如果行的结果为空,则为空列

Sql 如果行的结果为空,则为空列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想知道,如果条件为真,是否可以添加列,我的意思是,我们有一个简单的选择,如: SELECT [test1] , [test2] , [test3] FROM [testtable] 结果是有3列数据 但我只想在列不为null的情况下显示列test2,如果列test2的所有结果都为null,那么结果应该是2列(test1,test3)有可能实现吗?关于这将起作用: If (Select Count(0) From testtable Where test

我想知道,如果条件为真,是否可以添加列,我的意思是,我们有一个简单的选择,如:

SELECT
      [test1]
    , [test2]
    , [test3]
      FROM [testtable]
结果是有3列数据

但我只想在列不为null的情况下显示列
test2
,如果列
test2
的所有结果都为null,那么结果应该是2列
(test1,test3)
有可能实现吗?关于

这将起作用:

If (Select Count(0) From testtable Where test2 is not null) > 0
    Select test1, test2, test3 From testtable
Else
    Select test1,test3 From testtable
这将有助于:

If (Select Count(0) From testtable Where test2 is not null) > 0
    Select test1, test2, test3 From testtable
Else
    Select test1,test3 From testtable

为什么要这样做?这通常在表示逻辑中处理得更好。从技术上讲,您可以编写一个
if/else
语句来运行两个单独的查询,一个带该列,另一个不带该列,但我不推荐这样做……这似乎是不可能的,或者无论如何都会非常难看。为什么要这样做?这并不明智,因为您需要一个严格的模式将您的表示逻辑与之耦合。但是如果您愿意,您可以使用两个临时表(一个有三列,一个有两列)执行某些操作,并根据空条件从所需的临时表中进行选择。这绝对是留给使用另一种编程语言动态创建的语句的。。当SQL可以在其他地方完成时,不要把它搞得一团糟,这要容易得多。为什么要这样做呢?这通常在表示逻辑中处理得更好。从技术上讲,您可以编写一个
if/else
语句来运行两个单独的查询,一个带该列,另一个不带该列,但我不推荐这样做……这似乎是不可能的,或者无论如何都会非常难看。为什么要这样做?这并不明智,因为您需要一个严格的模式将您的表示逻辑与之耦合。但是如果您愿意,您可以使用两个临时表(一个有三列,一个有两列)执行某些操作,并根据空条件从所需的临时表中进行选择。这绝对是留给使用另一种编程语言动态创建的语句的。。当SQL可以在其他地方完成时,不要把它搞得一团糟,这要容易得多。您正在将test2与NULL进行比较,这将始终导致NULL(在本例中为零行)。那么当你数的时候,它总是0。将其从更改为“不是”,此操作将起作用。不知道您更改了此操作+1从我这里。按照编码,这将不起作用。您正在将test2与NULL进行比较,这将始终导致NULL(在本例中为零行)。那么当你数的时候,它总是0。将其从更改为“不是”,此操作将起作用。不知道您更改了此操作+从我这里得到1。