我通過用戶定義的函數重構了一些視圖,我想確保它們是相同的。SQL Server除了和ANSI NULLS
我寫了一個小的腳本來測試這種情況:
SET ANSI_NULLS OFF
GO
SELECT TOP 1000 [DealNumber]
,...others
FROM OLD_VIEW
EXCEPT
SELECT TOP 1000 [DealNumber]
,...others
FROM NEW_VIEW
當我申請這個,我獲得了一些行作爲結果。但是,如果我採取了DealNumber從任何行,我運行以下命令:
SET ANSI_NULLS OFF
GO
SELECT [DealNumber]
,...others
FROM OLD_VIEW
WHERE DealNumber = 'MyDealNumber'
EXCEPT
SELECT [DealNumber]
,...others
FROM NEW_VIEW
WHERE DealNumber = 'MyDealNumber'
這將返回如預期,一個空的記錄集。
作爲一種替代方法,我寫了一個函數Test_View_Correctness做前測試。但是,如果我這樣運行它:
SELECT TOP 1000 [DealNumber] from OLD_VIEW
where DealNumber IN (SELECT a.DealNumber
FROM Test_View_Correctness(DealNumber) as a)
如何確保除了方法的作品?
這產生了關鍵字 'ORDER' 附近有語法錯誤。 – Edmondo1984
來自SQL BOL:ORDER BY子句中的列名或別名必須引用左側查詢返回的列名。 –
@ Edmondo1984查看編輯 – 2012-12-04 10:25:48