2016-03-11 47 views
11

INSERT deyiminde belirtilen sütunlar için tablo diğer adı yok sayıldı. Yukarıdaki soruları bloglardan birinde gördüm. Ama cevabı hiçbir yerde bulamadım. Belki burada SQL Server uzmanları bana bu konuda yardımcı olabilir.SQL Server

CREATE TABLE #DEMO (VALUE1 INT, VALUE2 VARCHAR(10)) 

CREATE TABLE #DEMO1 (VALUE1 INT, VALUE2 VARCHAR(10)) 

INSERT INTO #DEMO VALUES (1, '10') 

INSERT INTO #DEMO1 (a.a.a.value1,b.b.b.value2) 
    SELECT 
     Value1, Value2 
    FROM #DEMO 

Ekleme ifadesini görürseniz, eklenen sütunlarda bazı diğer adlar belirttim. Merak ediyorum, SQL Server, deyimi yürütürken herhangi bir hata atmadı. Bunun sebebi nedir? Biri yardım edebilir mi?

+4

İlginç. Hızlı tahmin, sütun listesinde 'açık isimleri' kullanabilir ve gerisini yok sayar. Daha fazla bilgi [burada] (http://stackoverflow.com/questions/33424988/sql-server-object-names/33425543#33425543) ve [burada] (https://blogs.msdn.microsoft.com/ialonso/2007/12/21/msg-1013-nesne-s-ve-s-in-the-den-madde-sahip-aynı maruz-isimleri kullanım korelasyon-isimleri-için-ayırt-onları /) – lad2025

+4

İlginç, bu niteleyicilere izin verecek belgelerinde hiçbir şey göremiyorum. –

+0

@ lad2025. Linkler için teşekkürler. Ancak Görünen Adlar, tablo adlarıyla ilişkilidir. Bu sütun, [a.a.a.value1] veya "a.a.a.value1" anlamına gelen – bmsqldev

cevap

1

Buradaki sütun adlarının listesi # DEMO1 tablosundaki adların listesidir, bu nedenle niteleyicilerin hiçbir anlamı yoktur ve büyük olasılıkla göz ardı edilir.

Her iki durumda da sütun adlarını a.a.a.avalue1 olarak kullanmak isterseniz, söz dizimi hatası neden yükselmediği ilginçtir, daha sonra adı [] veya "" şeklinde yazmanız gerekir.

+0

sütununu değil. Her ikisi de geçersiz sütun hatası verecek – bmsqldev

+0

Evet, çünkü bu adlara sahip sütunlar oluşturmanız gerekir - aksi halde bu sütunlar mevcut değildir. –