在查询分析器中运行以下语句:
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc =
'
<root>
<qy>
<city>南海/city>
</qy>
</root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))-----------------出现下面错误错误:
服务器: 消息 6603,级别 16,状态 1,过程 sp_xml_preparedocument,行 13
XML 分析错误: 文本内容中发现无效字符。-----换成这样就正常DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc =
'
<root>
<qy>
<city>NH/city>
</qy>
</root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))
请高手指教,怎样才能读到中文字符
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc =
'
<root>
<qy>
<city>南海/city>
</qy>
</root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))-----------------出现下面错误错误:
服务器: 消息 6603,级别 16,状态 1,过程 sp_xml_preparedocument,行 13
XML 分析错误: 文本内容中发现无效字符。-----换成这样就正常DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc =
'
<root>
<qy>
<city>NH/city>
</qy>
</root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))
请高手指教,怎样才能读到中文字符
DECLARE @idoc int
DECLARE @doc nvarchar(1000) ----------------------------这里
SET @doc ='<root><qy><city>南海</city></qy></root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))--南海city> 改成 南海</city>
2.这个<city>NH/city> 改成 <city>NH</city>
DECLARE @doc varchar(1000)EXEC sp_xml_preparedocument @idoc OUTPUT, N'<root><qy><city>南海</city></qy></root>'
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))
这样就OK,因为有可能是乱吗,字符前要加N
DECLARE @doc nvarchar(1000)
set @doc=N'<root><qy><city>南海</city></qy></root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))
这样是正确的,
DECLARE @idoc int
DECLARE @doc varchar(1000)
set @doc=N'<root><qy><city>南海</city></qy></root>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT *
FROM OPENXML (@idoc, '/root/qy',2)
WITH (city varchar(10))
这是错误的,因为有中文字符就要定义nvarchar类型