我试图在消息中换出给定的字符串但是我发现我的方法有很大的性能成本(见下文)。
SELECT REPLACE(REPLACE(REPLACE(REPLACE(m.MessageDescription, '{{DeploymentDate}}', ISNULL(CONVERT(VARCHAR(30), d.ExpiryDate, 106), '')),
'{{EndOfMonthExpiryDate}}', CONVERT(VARCHAR(30), DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0)), 120) + '.00'),
'{{ExpiryDays}}', ISNULL(CONVERT(VARCHAR(30), DATEDIFF(dd, GETDATE(), d.ApprovalExpiryDate)), '')), '{{TermEndDate}}',
ISNULL(CONVERT(VARCHAR(30), d.term_end_date, 106), '')) ,
REPLACE(REPLACE(REPLACE(REPLACE(m.MessageExpiryText, '{{DeploymentDate}}', ISNULL(CONVERT(VARCHAR(30), d.ApprovalExpiryDate, 106), '')),
'{{EndOfMonthExpiryDate}}', CONVERT(VARCHAR(30), DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0)), 120) + '.00'),
'{{ExpiryDays}}', ISNULL(CONVERT(VARCHAR(30), DATEDIFF(dd, GETDATE(), d.ApprovalExpiryDate)), '')), '{{TermEndDate}}',
ISNULL(CONVERT(VARCHAR(30), d.term_end_date, 106), ''))
FROM AudienceMessages m
INNER JOIN AudienceCommunication d ON d.mID = d.dID
我希望那里的某个人遇到过这个问题,并且找到了一个更好的方法来实现我想要实现的目标。