我使用SQL Server 2008 R2作为后端。数据库中的一个表具有文本类型的字段。表中只有一个字段。 此表由应用程序填充,该应用程序将字符串列表放在单个文本字段中。由于某种原因,应用程序已开始在文本中添加一些奇怪的字符。因此它在文本的一行中显示为单个特殊字符。 例如:
abc
def
$
ghi
&
jkl
现在整个上面的字符串都存储在一个列条目中,并且有很多这样的条目。 我想知道如何编写SQL更新或替换查询以从列条目中删除特殊字符。因此,在运行查询后,行中的输出应为
abc
def
ghi
jkl
任何帮助表示赞赏。感谢
答案 0 :(得分:2)
试试这样:
SELECT REPLACE(STUFF
(
(
SELECT 'HereTheLineBreak' + The.Parts.value('.','varchar(max)')
FROM (SELECT CAST('<x>' + REPLACE(REPLACE(REPLACE(REPLACE(@yourString,'<','<'),'>','>'),'&','&'),@LineBreak,'</x><x>') + '</x>' AS XML)) AS MyString(AsXml)
CROSS APPLY MyString.AsXml.nodes('x') AS The(Parts)
WHERE LEN(The.Parts.value('.','varchar(max)'))>1
FOR XML PATH('')
),1,16,''),'HereTheLineBreak',@LineBreak)
如果您需要将结果再次连接到断行的单个字符串,请使用此选择
ID DateString
-- ----------
1 2016-01-01
2 (unknown)
3 2016-03-03