0
我的任務是修復現有存儲過程中的一些問題,這些問題將SELECT和JOIN語句集中到字符串中以便插入具有單個「數據」列的表中。縮短SQL數據字符串中的長替換函數
我在SQL Server Manager 2008 R2中工作。
我從另一個數據庫中的表(SourceTable)中提取數據,SourceTable中的一列(SourceDataColumn)可能包含以下代碼中的任何一個:A,B,C,D或E.添加了幾個REPLACE語句,以便A = 01,B = 02和C,D或E = 03。正如您從代碼中看到的(Stored Proc爲了清晰起見大大縮短),我必須多次使用REPLACE關鍵字在同一行。 C,D和E有單獨的REPLACE,但是必須以某種方式以更簡潔的方式組合C,D和E替代品?
有沒有辦法縮短這段代碼,或者減少冗餘?請記住,我不得不在字符串變量中編寫這個腳本,所以至少對我來說,語法似乎比編寫常規查詢sANS INSERT更棘手。
SET @SQLScript=
'INSERT INTO FOO_BAR_Data
(
PrimaryId
,Data
)
SELECT DISTINCT
+ISNULL(LTRIM(RTRIM(CONVERT(CHAR(2),
(REPLACE(REPLACE(REPLACE
(REPLACE(REPLACE(SomeTable.DataColumn,''A'',''01''),''B'',''02''),
''C'',''03''),''D'',''03''),''E'',''03''))))),'''')
LEFT JOIN dbo.FOO_BAR_Mapping v ON v.Foo_promo_code=BarV.promocode
Where Info.Startdate >=
CONVERT(CHAR(20),DATEADD (WEEK , -1, GETDATE()),106)'
Execute (@SQLScript)
謝謝。添加到相當複雜的INSERT INTO字符串時,語法不同,但使用CASE語句有效。 – Hotelsinger