2015-09-15 20 views
13

Aşağıdaki üç tablonun sorgusu, Tablo tümcesi ve sütun adı arasında fazladan boşluk bulunan Where cümlesi ne olursa olsun, aynı sonucu verir. Hepsinin de aynı uygulama planları var. Neden bir alanın varlığı bir sözdizimi hatası vermez?Bu Where yan tümcesindeki boşluk neden bir sözdizimi hatasına neden olmaz?

DECLARE @TblX TABLE(
    ColX int 
    ,ColY float 
    ) 

-----As it normally should be 
SELECT * 
FROM @TblX X 
WHERE X.ColX = 1 

----Even this works 
SELECT * 
FROM @TblX X 
WHERE X .ColX = 1 

----And this too 
SELECT * 
FROM @TblX X 
WHERE X. ColX = 1 
+0

Diyelim ki, onlar aynı sorguda mı, Yoksa sorgusuz hiç bir tupl olmadan neden sorgulandı? –

+0

Neden bu yasal olmamalı? Python'da da çalışıyor. – Kevin

cevap

13

Çünkü SQL, tamamen boşluk duyarsız olmasa da, "boşluk toleranslı" diyelim. Örneğin, şunu deneyin:

SELECT 23AB 

Eğlenceli, ha? Bu özellik, 1980'lerin başlarında, bu tür bir şeyin bazılarının iyi olduğu düşünüldüğünde orijinal SQL spesifikasyonlarında geri döndü (çünkü Fortran ve COBOL benzer davranışlara sahipti). IIRC, şimdi kullanımdan kaldırıldı, ancak eski/uyumluluk nedenleriyle, hala ona bağlıyız.

İlgili konular