SQL Server显示如果field1为null然后是field2,如果field1和field2为null然后是field3,如果field1,field2,field3为null则为field4如果所有4个字段为null则为NULL如何在SQL Server中显示?我假设可能是一个案例陈述,并在等情况下做案件,但我对此感到迷失。
编辑 - 我尝试运行像建议的直接COALESCE功能,我收到一个错误 除非使用IS NULL或LIKE运算符,否则无法比较或排序text,ntext和image数据类型。
Select
Count(SoldNum),
Coalesce(Store1, Store2, Store3, Store4) As Store_Item_Sold_From
ItemSoldBy
ItemSold
FROM salesDatabase
Where Sold Is not null
Group By ItemSoldBy, ItemSold, Coalesce(Store1, Store2, Store3, Store4)
答案 0 :(得分:4)
您正在寻找COALESCE运营商
SELECT COALESCE(field1, field2, field3, field4)
答案 1 :(得分:1)
您正在寻找coalesce功能
SELECT COALESCE(field1, field2, field3, field4) FROM Table
如果所有四个字段都为null,那么您的最终结果将为null。除非您当然要添加默认值:
SELECT COALESCE(field1, field2, field3, field4, 'Not Found') FROM Table
答案 2 :(得分:1)
请勿使用text
。使用varchar
问题不在于COALESCE(),而是因为按文本(或图像)字段进行分组。
DECLARE @t TABLE (a text)
SELECT a FROM @t GROUP BY a
Msg 306, Level 16, State 2, Line 3
The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
Text / ntext / image类型不能像数字或varchar那样排序。如果你有一堆书,你不会把“Fahrenheit 451”放在“The Bell Jar”旁边,因为他们的第一句话是“这是一个......”和“这是一个......”。您不会按第一个像素的颜色对图像进行排序。使用text
/ image
字段来保存图书/图片的内容和varchar
字段来保存标题。然后按标题排序。
答案 3 :(得分:0)
COALESCE按顺序计算参数,并返回最初未评估为NULL的第一个表达式的当前值。
SELECT COALESCE(field1, field2, field3, field4) FROM yourtable
或者您可以使用CASE声明
SELECT CASE WHEN field1 IS NULL THEN Field2
WHEN Field1 IS NULL AND Field2 IS NULL Then Field3
WHEN Field1 IS NULL AND Field2 IS NULL AND Field3 IS NULL Then Field4
ELSE 'NIL'
END
答案 4 :(得分:0)
据我所知,COALESCE不适用于这种情况,因为排序是在ntext或text字段中,它们可能为null或不为null。
我认为你能做的就是这样的CASE声明:
SELECT CASE WHEN CONVERT(NVARCHAR(MAX),Field1) IS NULL THEN CONVERT(NVARCHAR(MAX),Field2)
WHEN CONVERT(NVARCHAR(MAX),Field1) IS NULL AND CONVERT(NVARCHAR(MAX),Field2) THEN CONVERT(NVARCHAR(MAX),Field3)
WHEN CONVERT(NVARCHAR(MAX),Field1) IS NULL AND CONVERT(NVARCHAR(MAX),Field2) AND CONVERT(NVARCHAR(MAX),Field3) THEN CONVERT(NVARCHAR(MAX),Field4)
WHEN CONVERT(NVARCHAR(MAX),Field4) IS NULL THEN Field4 END
FROM YOURTABLE
注意:您可以根据具体情况使用数据类型,也可以更改条件AND
,OR
运算符