2013-09-30 162 views
1

我有兩個數據庫,數據庫A和數據庫B的表迭代SQL服務器:通過城市名稱

數據庫A包含一些數據需要被放置在一個表中數據庫b從現場數據子但是,在這之前,必須按照以下方式「清理」一些數據:

包含要放入數據庫B中的數據的數據庫A中的表具有名爲「Desc」的字段。系統的用戶不時地將城市名稱輸入到「Desc」字段中。例如:用戶可以鍵入「將傢俱移動到新的隔間。紐約。添加電「。

在將數據導入到數據庫B之前,需要從該數據中刪除單詞」New York「,以便它只讀取」將傢俱移動到新的隔間。加電「。但是 - 這很重要 - 數據庫A中的原始數據必須保持不變。換句話說,數據庫A的數據仍然會顯示爲「將傢俱移動到新的隔間。紐約。添加電動「,而數據庫B中的數據將顯示爲」將傢俱移動到新的隔間。添加電。」

數據庫B包含有哪些需要予以除名城市的名單表‘被放置在數據庫B之前,從數據庫A說明’欄數據

我如何構建一個存儲過程或函數,它將抓取來自數據庫A的數據,然後迭代數據庫B中的Cities表格,並且如果它在「Desc」字段中找到城市名稱將移除它,同時保留該字段中的其餘信息從而創建一個記錄集,然後我可以使用它來填充數據庫B中的相應表格?

我已經嘗試了幾件事,但仍然沒有破解它。但我相信這可能相當簡單。任何幫助是極大的讚賞!

謝謝。

編輯:

我試圖解決這個問題的最新的東西是這樣的:

DECLARE @cityName VarChar(50) 

While (Select COUNT(*) From ABCScanSQL.dbo.tblDiscardCitiesList) > 0 

Begin 

Select @cityName = ABCScanSQL.dbo.tblDiscardCitiesList.CityName FROM ABCScanSQL.dbo.tblDiscardCitiesList 

SELECT JOB_NO, LTRIM(RTRIM(SUBSTRING(JOB_NO, (LEN(job_no) -2), 5))) AS LOCATION 
     ,JOB_DESC, [Date_End] , REPLACE(Job_Desc,@cityName,' ') AS NoCity 
     FROM fmcs_tables.dbo.Jobt WHERE Job_No like '%loc%' 
End 

「Job_Desc」是需要有刪除的城市名的領域。

+0

你不想在你的文章中添加這些*幾件事*。 –

+0

你有這些項目(城市名稱)將被替換的列表?它存儲在一個表中嗎? – mhn

回答

0

這是一個數據質量問題。您可以隨時複製數據庫A中的[描述]並將其稱爲[cleared_desc]。

一個簡單的解決方案是編寫一個執行以下操作的函數。

1 - 從[tbl_remove_these_words]中讀取數據。這些是你想要刪除的短語。

2 - 將輸入 - @var_description與表中的行進行比較。

3 - 匹配時,替換爲空字符串。

此解決方案取決於您維護和更新的清理表。

運行更新查詢,該查詢使用來自[description]的輸入並調用[fn_remove_these_words]並將[cleared_desc]設置爲輸出。

另一種解決方案是查看SSIS中的Melisa Data(DQ)產品或SQL服務器堆棧中的數據質量服務等產品,爲您提供解決問題的應用程序框架工作。

相關問題