“İfade <= 1” arasındaki fark nedir? ve “ifade <= 1”?


11

Kodu ve vaka bildirimini incelemek, expression <= 1.aksine<= 1

Bunun amacının ne olduğundan emin değilim 1.. Düşüncesi olan var mı?


3
SQL Server 1., nokta nedeniyle tamsayı yerine sayısal (1,0) olarak davranır . Belki de ifadenin veri türüyle (en iyi uygulama) eşleşmesi için belirtilmiştir. Şahsen ben 1.0bu durumda belirtirim .
Dan Guzman

0Ondalık noktadan sonra herhangi bir eksiklik ve decimaldaha yüksek veri tipi önceliğine sahip intolması, sabitin yine de dolaylı olarak dolaylı olarak kullanılması gerektiğinde, bunun muhtemelen kasıtlı olmaktan ziyade bir yazma hatası olduğunu düşündürür.
Martin Smith

Yanıtlar:


18

1.bir NUMERIC(veya DECIMAL) sabit, 1bir INTEGERsabittir. Bazı durumlarda, gereksiz (veya istenmeyen) örtük tür dönüşümünü önlemek için bir sabitin veri türünü açıkça belirtmek yararlı olabilir.

Örneğin düşünün

create table t(f1 int);
insert into t values (2);

Sonra select 1/f1 from tdöndürür 0( INTEGER), select 1./f1 from tdöndürürse 0.5( DECIMAL) döner .

Örneğinizde karşılaştırmanın sol tarafında bir DECIMALsütun olduğunu ve açıkça bir DECIMALsabit belirtmenin , örtük bir tür dökümünden kaçınarak performansı marjinal olarak artırabileceğini varsayabiliriz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.