处理SQL中的&符号和特殊字符

时间:2013-02-28 16:45:24

标签: tsql

我正在尝试将旧数据转换为新的结构合理的SQL DB。为简单起见,我们假设一个旧表包含两个字段,Id和Emails。这是一些数据。

ID | Emails  
0 test@test.com, test1@test.com, stuff@domain.com  
1 thing@thing.com  

我想把它们带到新表中:

ID | Emails  
0 test@test.com  
0 test1@test.com  
0 stuff@domain.com  
1 thing@thing.com  

我可以使用此TSQL执行此操作:

INSERT INTO NewTable(Id, [Address])
Select t.Id, split.val
From OldTable t
Cross Apply dbo.Split(t.Emails, ',') split
WHERE t.Emails <> ''

这很有效,直到我遇到一个特殊字符的电子邮件,如下所示: 电子邮件@汤姆&安培; jerry.com

&符号打破查询并抛出以下错误:
Msg 9411,Level 16,State 1,Line 3
XML解析:第1行,第27个字符,预期分号

避免错误并将电子邮件映射到新表的最简单方法是:email @ tom&amp; jerry.com

感谢。

1 个答案:

答案 0 :(得分:1)

你最初可以简单地使用替换来替换所有的&符号,比如&#34; AANNDD&#34;或&& 39;&gt;&gt; AND&lt;&lt;&#39;。

SELECT REPLACE(Emails, '&', '>>AND<<')...

然后在完成后再替换它。

您可以在插入之前替换旧表中的所有安培。然后在新表上运行更新。