您可以構建一個自定義表達式,但它不會簡化很多事情。例如:
CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4)
在這裏,你可以嘗試一下:
DECLARE @Value1 TINYINT = 5
,@Value2 TINYINT = 5
,@Value3 TINYINT = 5
,@Value4 TINYINT = 3;
SELECT IIF(CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4), 1, 0)
GO
DECLARE @Value1 TINYINT = 5
,@Value2 TINYINT = 5
,@Value3 TINYINT = 5
,@Value4 TINYINT = 5;
SELECT IIF(CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4), 1, 0)
GO
DECLARE @Value1 TINYINT = 5
,@Value2 TINYINT = NULL
,@Value3 TINYINT = 5
,@Value4 TINYINT = 5;
SELECT IIF(CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4), 1, 0)
GO
DECLARE @Value1 VARCHAR(8) = 5
,@Value2 TINYINT = 5
,@Value3 TINYINT = 5
,@Value4 TINYINT = 5;
SELECT IIF(CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4), 1, 0)
GO
這樣可以減少一點點的長度,但你必須測試它是如何影響性能,使用AND
標準溶液比較。
您可以創建一個函數,以便在其他地方移除AND鏈。 –
爲了節省巨大的7列鏈,您將不得不使用動態sql,在這裏您將查詢表的列,並構建where條件。 –
會有6個比較,我不會稱之爲巨大的。 –