2012-05-03 35 views
0

我一共有三個sql命令在一個連接上運行。當查詢運行時,除了一件小事外,一切都可以正常工作。最後一條命令的UNION SELECT不會在最後一條語句的末尾附加'TEXT'。聯合選擇適用於第一個命令,但不是第二個?

 SqlCommand commandtwo = new SqlCommand("SELECT PID = RIGHT(REPLICATE('0',8) + CAST(PID AS VARCHAR(8)),8) + ',' FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID UNION SELECT 'TEXT'", con); 
     SqlCommand commandthree = new SqlCommand("SELECT INST = INST + ',' FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID UNION SELECT 'TEXT'", con); 

我覺得這很奇怪,因爲commandtwo工作得很好。我也覺得很奇怪,爲了使逗號的commandthree工作,我不得不寫

= INST + ',' 

,而不是僅僅

+ ',' 

那麼,爲什麼我有這些奇怪的事件?或者因爲我認爲自己是初學者,我明顯不知道這個規則是什麼?我使用SQL Server 2008 R2非常感謝。

+0

@PARENTPID如何被初始化? –

+0

「你是什麼意思」而不是「+」,「'」? –

+0

PARENTPID是一個貫穿文本框值的參數。 @Eben,如果你在commandtwo中注意到只添加+','用逗號分隔這些值,而在命令3中,簡單地添加+','將不起作用,我強制要求right = INST +','以使逗號工作。我會盡快發佈代碼。謝謝。 – javasocute

回答

0

什麼是INST的數據類型?

CAST(INST AS nvarchar) + ','可能工作。

0

該聯盟應該工作。檢查'TEXT'位是否不在列表中。如果您的INST列已編入索引,那麼可能會對您的結果進行排序,這就是爲什麼它可能不會結束。

相關問題