2012-04-30 42 views
0

我有一個新項目,只需要一些建議就如何高效快速地完成它。在SQL查詢中設計並登錄

我有一個約10萬行,大約50到60個字段的表。它被索引並有一個主鍵。在這種情況下,主要關鍵是條形碼。

我必須創建一個查詢遍歷每一行並檢查每個步驟的規則。

例如第一條規則是檢查如果主鍵的第3位爲0,所以代碼明智這將是SUBSTRING(PkgBarcode, 3, 1) = 0

如果該規則失敗,我想打印出的消息。 此外,無論這條規則是否失敗或通過,我想繼續,因爲規則不相互依賴,即它可能會違反規則2,但通過規則3,這是可以的。

我正在尋求最佳設計實踐。僅僅使用帶有打印消息或某種循環的select語句會有效嗎? 你會如何快速有效地做到這一點?

+2

[Stack Overflow是不是你個人的研究助理(http://meta.stackexchange.com/a/128553/140505) – Oded

回答

0

你不想這樣做「通過每一行」,而是採用標準集合論。例如,您可以添加您需要的每個運行測試了一下欄,然後運行一個查詢來更新基於測試該位:

UPDATE tblMyTable 
SET [IsThirdDigitZero] = 0 
WHERE SUBSTRING(PkgBarcode, 3, 1) <> 0 

這使得它易拉的人的列表在避免遊標的同時不要滿足某種測試。

+0

三江源,這聽起來像一個好辦法做到這一點。不過,要開始我的腳本。 'SELECT * INTO #TempTable FROM master_table'。我應該手動添加位列或創建一個新的表位的列 – masfenix

+0

是的,你可以做「SELECT * INTO」,然後再「ALTER TABLE #TempTable ADD [IsThirdDigitZero]比特的空」,那麼我可能會'UPDATE SET #TempTable [IsThirdDigitZero] = 1' 來設置一切爲1(而不是NULL),其次是您的更新爲適當的值設置爲零。當然,您需要爲每個要運行的測試執行此操作,然後在臨時表銷燬之前需要對結果進行一些操作。我有道理嗎? –