修正: 不正確的結果,當您執行查詢時,包含連接詞以及在 SQL Server Compact 3.5 分離

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:2494715
徵狀
當您對 Microsoft SQL Server Compact 3.5 資料庫執行查詢時,會傳回不正確的結果。當查詢包含連接詞和分離,就會發生這個問題。如果我們假設是運算子 OR查詢必須符合下列特定的條件:
  • 其中一個的運算元 運算子是運算式,包含 OR 運算子。
  • 運算元OR運算子包含參考相同的資料行的運算式。因此,資料行的索引可以用來比對運算式。
  • 其他運算元的 運算子包含此清單中的前一個項目符號點中所指定的資料行使用的相同索引的直欄參照。因此,您可以也在此運算式上使用索引。
比方說,假設您建立下列資料表中使用 SQL Server Compact 3.5 資料庫中的索引。
CREATE TABLE T1( C1 int, C2 int)GOCREATE INDEX IND_T1 ON T1 (C1, C2)GOCREATE TABLE T2( C1 int, C2 int)GOCREATE INDEX IND_T2 ON T2 (C1, C2)GOINSERT INTO T1 VALUES (1, 0)GOINSERT INTO T1 VALUES (2, 0)GOINSERT INTO T2 VALUES (1, -1)GOINSERT INTO T2 VALUES (2, 0)GO
然後,您執行下列查詢:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO
在執行查詢之後,您會收到下列不正確的結果:
T1。C1T1。C2T2。C1T2。C2
2020
然而,您應該下列結果:
T1。C1T1。C2T2。C1T2。C2
101-1
2020
附註當您使用時,也會發生這個問題位置子句來對兩個運算式執行邏輯交集。比方說,這個問題也會發生當您執行下列查詢:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ONT1.C1 = T2.C1WHERE T1.C2 = T2.C2 OR T2.C2 = -1GO
解決方案
解決了這個問題的 hotfix 併入累積更新套件 4 中,為 SQL Server Compact 3.5 Service Pack 2。

如需有關如何取得累積更新套件 4 的 SQL Server Compact 3.5 Service Pack 2 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
2516828 累積更新 4 為 SQL Server Compact 3.5 服務套件 2
其他可行方案
若要解決這個問題,請使用下列方法之一重寫查詢:

方法 1

若要停用索引,查詢中使用資料表提示。例如,執行下列查詢若要停用索引:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 WITH (INDEX(0)) ONT1.C1 = T2.C1AND (T1.C2 = T2.C2 OR T2.C2 = -1)GO 

方法 2

重寫查詢,以避免會議"徵狀 〉 一節所述的條件:
SELECT T1.C1 [T1.C1], T1.C2 [T1.C2], T2.C1 [T2.C1], T2.C2 [T2.C2]FROM T1 INNER JOIN T2 ON(T1.C1 = T2.C1 AND T2.C2 = -1) OR (T1.C1 = T2.C1 AND T1.C2 = T2.C2)
狀況說明
Microsoft 已確認這是在 「 Microsoft 產品資料 」 適用於 」 一節中所列的問題。

警告:本文為自動翻譯

內容

文章識別碼:2494715 - 最後檢閱時間:04/27/2011 09:21:00 - 修訂: 2.0

  • kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB2494715 KbMtzh
意見反應