如果我的列的值为 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