【发布时间】:2012-05-04 07:36:35
【问题描述】:
原问题:
我是 SQL Server 的新手,找不到我要找的东西。我正在尝试在 SQL 中创建此逻辑:
IF [column] IS NULL THEN
( SELECT [value] as [columnname] )
ELSE
( SELECT [column] WHERE [column_value] IS NOT NULL )
基本上,如果整列为空,我想选择并用某个值填充整列。
否则,如果该列不完全为空,我只想选择它的非空值(合并?)。
使用 SQL Server 2005 执行此操作的最佳方法是什么?
回答(感谢 Josh 和其他所有人!)
IF EXISTS(SELECT myColumn
FROM mytable
WHERE myColumn IS NOT NULL)
SELECT myColumn as colName
FROM myTable
WHERE myColumn is NOT NULL
ELSE
SELECT [nullReplacementValue] as colName
FROM myTable
之前对困惑的澄清:
编辑:例如,如果给我一个输入表:
ColA ColB ColC
--------------------
A null null
B null 1
C null null
如果我在 ColB 上运行此 SELECT,它应该返回:
ColB
----
null
null
null
(最终我想用某个值替换“null”,但这可能会在以后出现)。
如果我在 ColC 上运行此 SELECT,它应该返回:
ColC
----
1
【问题讨论】:
-
SQL Server : check if variable is NULL for WHERE clause 的重复以及关于 SO 的数十个类似问题 - 在再次提出相同问题之前,您应该 SEARCH FIRST...
-
我一直在搜索一堆(我的第一行被截断,因为我以“hi all”或类似的开头)。我没有意识到它会在 WHERE 子句中。对不起/谢谢。
-
我不相信那个帖子能完全回答我的问题,或者至少我不明白它是怎么做的。如果可选输入变量是否为空,则该帖子选择不同的值,而我试图查看现有的整个列是否为空,然后选择自身或自身的一部分。
-
“现有的整个列是否为空”是什么意思?一行中的字段可以为空。但是您是要检查所有已将该字段设置为 null 的行,还是逐行检查?
-
我已经用答案更新了我的原始帖子。非常感谢,大家!还有@marc_s:对不起,我可能造成的head>>书桌。
标签: sql sql-server-2005 select null