如果列的值为 NULL 或空白,则显示其他列值



如果我的列的值为 NULL 或空白,我想显示其他列的值。下面是我的表格。

DECLARE @Tab TABLE(ID INT, suser VARCHAR(10), sgroup VARCHAR(10), sregion VARCHAR(10))
INSERT INTO  @Tab VALUES(1,'Test',NULL,NULL),(2,'','Group',NULL),(3,NULL,NULL,'Region'),(4,NULL,NULL,NULL)
SELECT * from @Tab

我的查询:

SELECT ID 
,Case WHEN suser IS NULL OR suser = ''
THEN sgroup
WHEN sgroup IS NULL OR sgroup = ''
THEN sregion
ELSE NULL
END AS col 
from @Tab

我想要 oupput 作为:-

DECLARE @Tab1 TABLE(ID INT, col VARCHAR(10))
INSERT INTO  @Tab1 VALUES(1,'Test'),(2,'Group'),(3,'Region'),(4,NULL)
SELECT * from @Tab1

谢谢

空白和NULL不一样。如果要将''NULL视为相同的值,一种方法是使用NULLIF

ISNULL(NULLIF(YourFirstColumn,''),YourOtherColumn)

但是,理想情况下,如果任何一个可以存储在您的数据中,但它们应该被视为相同,则不允许使用其中一个。就个人而言,我会将列的所有值更新为NULL它们的值为'',然后添加一个不允许该值''的约束。像这样:

UPDATE YourTable
SET YourColumn = NULL
WHERE YourColumn = '';
ALTER TABLE YourTable ADD CONSTRAINT YourColumn_NotBlank CHECK (YourColumn IS NULL OR YourColumn <> '');

使用 COALESCE 函数,它将返回第一个非空值

SELECT ID ,COALESCE(suser , sgroup, sregion)     
col 
from @Tab

最新更新