案例当点那么'某事'ELSE null END快捷方式

时间:2016-02-08 16:39:54

标签: sql-server

MS SQL Server中是否有快捷方式用于呼叫 CASE WHEN位那么'某事'ELSE null END ?有没有办法以不同的方式写它?

示例方案:

DECLARE @data TABLE(IsSomething BIT NOT NULL, Value NVARCHAR(30) NOT NULL);

INSERT INTO @data VALUES
(1, 'a'),
(1, 'b'),
(0, 'c'),
(0, 'd');

SELECT
CASE WHEN IsSomething = 1 THEN Value ELSE NULL END,
CASE WHEN IsSomething = 1 THEN 'string' ELSE NULL END,
CASE WHEN IsSomething = 0 THEN 'not ' + Value ELSE NULL END
FROM @data

我特别关注BIT值为1(真)的变体。

关注的是select语句的可读性和为一个简单的case / if写的过长的表达式。

我在我的一个观点中使用这些表达方式,这些表达方式最让我困扰。我不是说那个视图或表格的设计是理想的。 (事实上,它并不理想!)

2 个答案:

答案 0 :(得分:3)

不知道你会认为什么是捷径,但你可以这样写:

CASE IsSomething
 WHEN 1 THEN 'SomeThing'
 ELSE NULL
END

答案 1 :(得分:3)

你可以使用IIF (SQL Server 2012+),它应该是CASE的简写,但在我看来,查询最终的可读性更低(虽然可能是我习惯的问题):

SELECT
    IIF(IsSomething = 1, Value1, NULL) AS val1,
    IIF(IsSomething = 1, Value2, NULL) AS val2,
    IIF(IsSomething = 0, Value3, NULL) AS val3
FROM @data