使用sql server替换单个记录中的多个字符串

时间:2017-02-09 20:16:04

标签: sql-server replace case

我有一个html字符串存储为记录:

<div>          
<p>##RecipientFirstName##,</p>          
<p>##CustomerProjectOwnerName## with ##CustomerName## has approved your...</p>         </div>  

我想用哈希表中存储的实际名称替换哈希标签内的项目。我试过这个,但它返回3个不同的记录。我需要返回一条记录,其中哈希标记内的项目替换为Replace语句。我的代码:

SELECT mtg.Template,  REPLACE(mtg.Template, '##RecipientFirstName##',(SELECT p.FirstName FROM dbo.Person p WHERE p.PersonId = 16)) , 
                      REPLACE(mtg.Template, '##CustomerProjectOwnerName##',(SELECT p.FirstName FROM dbo.Person p WHERE p.PersonId = 16))   
 FROM dbo.MessageTypeGlobal mtg
WHERE mtg.MessageTypeGlobalId = 1

2 个答案:

答案 0 :(得分:1)

我认为这就是你要做的事情(如果你需要不同的子查询):

AllowFocusOnInteraction="False" IsDoubleTapEnabled="False" IsHitTestVisible="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False"

答案 1 :(得分:1)

您需要嵌套替换语句:

SELECT REPLACE(
               REPLACE(mtg.Template, '##RecipientFirstName##', p.FirstName), 
       , '##CustomerProjectOwnerName##', p.FirstName) 
FROM dbo.MessageTypeGlobal mtg
CROSS APPLY
(
    SELECT FirstName FROM dbo.Person WHERE PersonId = 16
) p
WHERE mtg.MessageTypeGlobalId = 1

我使用了交叉应用来防止需要一遍又一遍地编写子查询。