2011-04-14 106 views
0
insert into PendingEmails (Subject,Body,ToEmail,PendingEmailStatusID) 
select REPLACE(select subject from dbo.EmailTemplates where ID = 7), '[CallID]'), (select Body from dbo.EmailTemplates where ID = 7) ,contact.Email ,5 
FROM inserted AS i inner join Calls on i.CallID = Calls.CallId inner join Contact on calls.ContactID = Contact.ContactID 
where contact.Email is not null and contact.Email <> '' 

我想用值替換主題中的[CallID]。該語法不起作用。 我也試過使用一個變量,也不會工作。SELECT或變量的SQL替換()函數

這樣做的最好方法是什麼?

回答

3
insert into PendingEmails (Subject) 
select REPLACE(subject, '[CallID]', @callid) 
from dbo.EmailTemplates 
where ID = 7 

我看不到你在哪裏加入到呼叫表得到calls.callid,你已經存儲它變成一個變量?

可以跳過變量,如果你有這將產生它的子查詢(括號標量子查詢)

insert into PendingEmails (Subject) 
select REPLACE(subject, '[CallID]', (select callid from calls where id=9)) 
from dbo.EmailTemplates 
where ID = 7 

或加入它

insert into PendingEmails (Subject) 
select REPLACE(e.subject, '[CallID]', c.callid) 
from dbo.EmailTemplates e 
join calls c on c.id=9 
where e.ID = 7 
1

你有一些有心計的括號:

insert into PendingEmails (Subject) 
select REPLACE((select subject from dbo.EmailTemplates where ID = 7), '[CallID]' , calls.callid) 
+0

感謝接受。不過,我認爲理查德有更好的答案。相反,我會去。 – 2011-04-14 21:37:07

+0

你的權利..我第一次嘗試這個,它的作品,所以我打了繼續,現在我試着另一個它更好...非常感謝。 – Ezi 2011-04-17 16:37:43

1
INSERT INTO PendingEmails (Subject) 
SELECT REPLACE(subject, '[CallID]' , calls.callid) 
    FROM dbo.EmailTemplates 
WHERE ID = 7 
+0

call.callid從哪裏來? – RichardTheKiwi 2011-04-14 21:18:35