【发布时间】:2023-12-31 22:50:01
【问题描述】:
我的 select 语句中的一列具有行制表符,即 。我在 xml 文件中使用此字段,当我在 XML 文件中收到错误非法字符时。 sql中有没有办法避免/替换特殊字符。
我一直在看这个链接
https://www.sqlshack.com/replace-ascii-special-characters-sql-server/
但只是想知道是否有更简单的方法可以做到这一点。
我试过这个没有运气
declare @test nvarchar(50) = 'abeprakash'
select ISNULL(REPLACE(REPLACE(REPLACE(REPLACE(@test, '!', ''), '#', ''), '$', ''), '&', ''), '') AS [Address1]
set @test = 'Peacehaven ChildrenÍs CentreMeridian Way
'
select ISNULL(REPLACE(REPLACE(REPLACE(REPLACE(@test, '!', ''), '#', ''), '$', ''), '&', ''), '') AS [Address2]
带有特殊字符的文本如下 'Peacehaven Children's CentreMeridian Way'
【问题讨论】:
-
替换功能是否无法满足您的要求。
-
REPLACE以某种方式将成为您想要的...所以不,不是真正的 更简单 方式,除非您在前端使用REGEX -
没有特殊字符在Unicode中。您看到的网页使用存储在 SQL Servcer
nvarchar字段中的 Unicode,这就是为什么我可以输入αυτό εδώ并确保它会正确显示。 -
请发布您的代码和表架构。 SQL Server 不会抱怨存储在 nvarchar 字段中的 any 字符。它只会抱怨存储在
xml-typed 字段中的无效字符。但是,如果您尝试使用字符串连接构造查询,或者客户端应用程序存储无效 XML 然后尝试将其解析回来,您会遇到问题 -
来自*在Tab Characters 上的文章:
The vertical tab is  but is not allowed in SGML; this includes XML 1.0 and HTML.。首先,您不应该在 XML 文件中包含此序列。这不应该存储在任何人或代码期望 XML 内容的地方
标签: sql sql-server xml unicode special-characters