2012-11-28 44 views
0

我想要在包含我想要分割的值的列上執行聯接。因此,如果該列包含電子郵件地址,我想加入「@」符號前的部分。SQL加入拆分?

我已經看到了拆分功能,但我沒有看到任何地方我可以選擇哪個數組元素從拆分結果中選擇?

因此,像:

JOIN ON dbo.split('@',T1.Column)(0)? 
+0

是有一個內置的分割功能,或者你只是寫一個? – Tobsey

回答

1

我想你最好還是剛剛加盟的子串起來的@符號:

SELECT * 
FROM Email 
LEFT JOIN EmailName ON Substring(Email.Address, 1, CharIndex('@', Email.Address) - 1) = EmailName.Name 

見小提琴這裏: http://www.sqlfiddle.com/#!6/5d0f5/8

+1

我同意。如果只執行一個分割,則不需要「分割」。但要小心由於可能沒有「@」值的值引起的SUBSTRING錯誤。避免這種情況的一種方法是在應用SUBSTRING之前僅預先選擇列_does_包含「@」的行。 – sebt

+0

@sebt - 你是對的。我會擴大這個以迎合空值,無效值等並進行相應的測試。不過,我認爲這足以說明我的觀點。 – Tobsey