0
我的電子郵件列表在我的查詢中,包含30多封電子郵件。將電子郵件列表中的10封電子郵件與10個郵件列表從10個郵箱分配到10個郵箱
Print @Emails
結果:EMAIL1並[a] test.com; EMAIL2並[a] test.com; ...; email35並[a] test.com;
我需要從10發送到10.我必須從這個列表中發送10個。
這怎麼能用SQL Server來完成?
我的電子郵件列表在我的查詢中,包含30多封電子郵件。將電子郵件列表中的10封電子郵件與10個郵件列表從10個郵箱分配到10個郵箱
Print @Emails
結果:EMAIL1並[a] test.com; EMAIL2並[a] test.com; ...; email35並[a] test.com;
我需要從10發送到10.我必須從這個列表中發送10個。
這怎麼能用SQL Server來完成?
嘗試這個SQL,它使用公用表表達式(CTE)來循環輸入值,還有其他方法可用,但如果您希望分解字符串輸入並將其轉換爲表格,則應該滿足您的需求:
DECLARE @DemoTable table (Layout varchar(2000))
INSERT @DemoTable VALUES ('email1[a]test.com;email2[a]test.com;email3[a]test.com;email4[a]test.com;email5[a]test.com;email6[a]test.com;email7[a]test.com;email8[a]test.com;email9[a]test.com;email10[a]test.com;email11[a]test.com;email12[a]test.com;email13[a]test.com;email14[a]test.com;email15[a]test.com;email16[a]test.com;email17[a]test.com;email18[a]test.com;email19[a]test.com;email20[a]test.com;email21[a]test.com;email22[a]test.com;email23[a]test.com;email24[a]test.com;email25[a]test.com;email26[a]test.com;email27[a]test.com;email28[a]test.com;email29[a]test.com;email30[a]test.com;email31[a]test.com;email32[a]test.com;email33[a]test.com;email34[a]test.com;email35[a]test.com;')
DECLARE @StringToTable table (email varchar(200))
DECLARE @Concatenated VARCHAR(2000)
SET @Concatenated=''
;WITH StringToTable AS
( SELECT LEFT(Layout,CHARINDEX(';',Layout)) AS Email
, RIGHT(Layout,LEN(Layout)-CHARINDEX(';',Layout)) StringToProcess
FROM @DemoTable
WHERE Layout IS NOT NULL AND CHARINDEX(';',Layout)>0
UNION ALL
SELECT LEFT(StringToProcess,CHARINDEX(';',StringToProcess))
, RIGHT(StringToProcess,LEN(StringToProcess)-CHARINDEX(';',StringToProcess))
FROM StringToTable
WHERE StringToProcess IS NOT NULL AND CHARINDEX(';',StringToProcess)>0
)
INSERT INTO @StringToTable(email)
SELECT TOP 10 Email FROM StringToTable--TOP 10 is to get the 10 mentioned in the question - you can change the order by to affect which 10 you wish to use.
SELECT Email FROM @StringToTable
如果需要的行重新整合成一個字符串,你可以做這樣的:
SELECT @Concatenated = @Concatenated + Email FROM @StringToTable
SELECT @Concatenated
從10到10? –
我收到你揭示了這個問題的更多細節 –