首页 > 解决方案 > SQL 存储过程中的 Unicode

问题描述

从存储过程接收到的数据表包含一个 XML 列。该 XML 列包含 unicode 数据(例如:顾客名称)。由于 XML 中的文字没有以 N' 为前缀。如何获取 unicode 数据并将其存储在变量中?

标签: sql-serverstored-proceduresunicode

解决方案


您只需在下面的 XML 列之前添加N并将此值分配给变量。

DECLARE @XML XML=N'顾客名称' --Add your Column Name
SELECT @XML 

DECLARE @XML NVARCHAR(50)=N'顾客名称'
SELECT @XML 

插入

INSERT INTO TableName ([Col_Name]) VALUES (N'<Value>')

XML 解析

DECLARE @XML_ XML=N'<Event><Name><Action>顾客名称</Action></Name></Event>' -- add "N" here

SELECT T.item.value('(Name)[1]', 'NVARCHAR(MAX)') AS [Unicode]
FROM @XML_.nodes('/Event') AS T(item)

使用表格插入

DECLARE @T TABLE (         --- Creating 1st Tables
[NAME] NVARCHAR(255))

DECLARE @AnotherTable TABLE (   --- Creating 2nd Tables
[2nd Table NAME] NVARCHAR(255))

DECLARE @xml_ XML=N'<Event><Name><Action>顾客名称</Action></Name></Event>' -- add "N" here

INSERT INTO @T                 ----Inserting Data into 1st Table
SELECT T.item.value('(Name)[1]', 'NVARCHAR(MAX)') 
FROM @XML_.nodes('/Event') AS T(item)

SET @xml_=(SELECT NAME FROM @T FOR XML PATH('Columns'), TYPE)

INSERT INTO @AnotherTable      ----Inserting Data into 2nd Table
SELECT T.item.value('(NAME)[1]', 'NVARCHAR(MAX)') 
FROM @XML_.nodes('/Columns') AS T(item)

SELECT * FROM @T
SELECT * FROM @AnotherTable


推荐阅读