2015-06-06 129 views
0

我正在嘗試將數據從一個數據庫移動到另一個數據庫。在舊數據庫中有一列數據類型DateTime,需要將其映射到類型爲Date的新數據庫中的新列。如何解決排序規則衝突

要嘗試做到這一點我寫了下面的SQL查詢

UPDATE NewFishTrackerProfessional.dbo.LandingHeaders 
    SET NewFishTrackerProfessional.dbo.LandingHeaders.LandingDate1 = (SELECT CONVERT(DATE,FishTracker.dbo.Landings.LandingDate) FROM FishTracker.dbo.Landings WHERE LandingHeaders.TicketNumber = FishTracker.dbo.Landings.TicketNo) 

執行時,然而,這產生以下錯誤。

1無法解決等於操作中「SQL_Latin1_General_CP1_CI_AS」與「Latin1_General_CI_AS」之間的排序規則衝突。 SQL1.sql 2 1

任何人都可以提出一種解決方法嗎?

感謝

原始數據庫於2005年SQLSERVER寫回,新的數據庫在SQLSERVER 2012年創建,我不再有輕鬆訪問SQLSERVER的2005實例。

回答

1

這個問題可能不在date(當然如果我們假設你真的在使用本機類型)。這留下了where條款。因此,使用COLLATE操作:

UPDATE NewFishTrackerProfessional.dbo.LandingHeaders lh 
    SET lh.LandingDate1 = (SELECT CONVERT(DATE, l.LandingDate) 
          FROM FishTracker.dbo.Landings l 
          WHERE lh.TicketNumber COLLATE Latin1_General_CI_AS = ls.TicketNo COLLATE Latin1_General_CI_AS 
         ); 

我不知道哪個值是哪個歸類,所以我只是把運營商在兩側。您應該將運營商僅限於lh這一方,查詢可以使用Landings.TicketNo上的索引。

編輯:

這表明你有匹配WHERE多個值。最簡單的方法是選擇一個,或者使用TOP或聚合函數:

UPDATE NewFishTrackerProfessional.dbo.LandingHeaders lh 
    SET lh.LandingDate1 = (SELECT TOP 1 CONVERT(DATE, l.LandingDate) 
          FROM FishTracker.dbo.Landings l 
          WHERE lh.TicketNumber COLLATE Latin1_General_CI_AS = ls.TicketNo COLLATE Latin1_General_CI_AS 
         ); 

UPDATE NewFishTrackerProfessional.dbo.LandingHeaders lh 
    SET lh.LandingDate1 = (SELECT MAX(CONVERT(DATE, l.LandingDate)) 
          FROM FishTracker.dbo.Landings l 
          WHERE lh.TicketNumber COLLATE Latin1_General_CI_AS = ls.TicketNo COLLATE Latin1_General_CI_AS 
         ); 
+0

喜登我修改你的建議小幅以下; UPDATE NewFishTrackerProfessional.dbo.LandingHeaders SET LandingDate1 =(SELECT CONVERT(DATE,l.LandingDate) FROM FishTracker.dbo.Landings升 WHERE TicketNumber COLLATE Latin1_General_CI_AS = l.TicketNo COLLATE Latin1_General_CI_AS ); –

+0

其中產生以下錯誤; 1子查詢返回了多個值。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 SQL2.sql 1 1我懷疑這可能是因爲表中有106,00行,我需要更新每一個。我應該試圖在某種循環中包裝你的建議嗎? –

+0

夢幻般的戈登,非常感謝。 –