カスタム式を作成することはできますが、単純化することはありません。たとえば:
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
を使用して標準溶液との比較のパフォーマンスに影響を及ぼしている、どのようにテストする必要があります。ここでは
CONCAT(@Value1, @Value2, @Value3, @Value4) = REPLICATE(@Value1, 4)
は、あなたはそれを試すことができます。
ANDの連鎖が別の場所で削除されるように関数を作成できます。 –
7列のHUGEチェーンを節約するには、動的SQLを使用する必要があります。ここで、テーブルの列を照会し、where条件を作成します。 –
6つの比較がありますが、私はこれを大規模とは言いません。 –