原始问题:
我是SQL服务器的新手,无法找到我想要的东西。我正在尝试在SQL中创建这个逻辑:
IF [column] IS NULL THEN
( SELECT [value] as [columnname] )
ELSE
( SELECT [column] WHERE [column_value] IS NOT NULL )
基本上,如果整个列都为null,我想选择并用特定值填充整个列。
否则,如果该列不是完全为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
答案 0 :(得分:1)
如果你只想询问一种已知列中默认值的方法,如果列中的所有值都为NULL,那么你可以使用它:
IF EXISTS(SELECT myColumn FROM mytable WHERE myColumn IS NOT NULL)
SELECT myColumn FROM myTable WHERE myColumn is NOT NULL
ELSE
UPDATE myTable SET myColumn = myValue
这是检查您关注的列中是否至少有一个值不为空。如果是这意味着你想选择。否则,您将更新所有列,因为在请求非空列时未返回结果。
答案 1 :(得分:-1)
首先需要了解SQL中的四个基本命令。我们将使用以下人员表作为示例
名称已婚家属
------- ---------- ----------------
比尔真真
简假
弗兰真真
埃德假
汤姆假真
选择 - (您看起来已经理解)允许您根据搜索条件从表格或多个表格中检索数据。
选择名称 来自人 名称='比尔'
本声明将返回以下
名称已婚家属
------- ---------- ----------------
比尔真真
插入 - 允许您在数据库中输入新记录
插入人物 (姓名,已婚,家属) VALUES ('Jill','True','False')
此声明会使人员表看起来如下表
名称已婚家属
------- ---------- ----------------
比尔真真
简假
弗兰真真
埃德假
吉尔真
汤姆假真
删除 - 从表中删除记录
DELETE FROM People WHERE Name ='Fran'
此声明将使Person表看起来如下
名称已婚家属
------- ---------- ----------------
比尔真真
简假
埃德假
吉尔真
汤姆假真
最后你正在寻找的那个 ***更新 - 允许您根据您的标准更新您的表格以获取任意数量的记录
直到今天,如果某人没有家属,您将dependents列留空。现在你的老板告诉你,没有家属的人必须在家属列中有'假'。你会写下面的陈述
更新人 SET Dependents ='False' WHERE Dependents = NULL
您的表格如下所示。
名称已婚家属
------- ---------- ----------------
比尔真真
简假
假
埃德假假
吉尔对错
汤姆假真