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写的过长的表达式。
我在我的一个观点中使用这些表达方式,这些表达方式最让我困扰。我不是说那个视图或表格的设计是理想的。 (事实上,它并不理想!)
答案 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