插入sql_variant列在sql服务器
问题描述:
我想插入一个值到sql_variant列sql服务器从xml列插入sql_variant列在sql服务器
前。
INSERT INTO
[dbo].[TestColumn]
(
Id,
Attribute,
AttributeValue
)
SELECT
Id,
'TestName',
CAST(CustomColumns.query('//TestName') AS nVarchar(MAX))
FROM
[dbo].[Clmnt] (NOLOCK)
我得到这个错误,
Operand type clash: nvarchar(max) is incompatible with sql_variant
任何人对此有任何线索,如何方便地插入在SQL_VARIANT值?
答
SQL_VARIANT不能存储为nvarchar(最大)
这种联系说,值以下的类型不能使用SQL_VARIANT存储:
varchar(max)
varbinary(max)
nvarchar(max)
xml
text
ntext
image
timestamp
sql_variant
geography
hierarchyid
geometry
User-defined types
答
SQL_VARIANT不支持字符串。对于SQL Server 2008 R2:
nvarchar(4000) but not nvarchar(max).
varchar(8000) but not varchar(max)
我发现的文档在这些阈值上有点模糊。
同意。那么我如何插入数据呢? – 2010-03-08 18:43:45
不要使用sql_variant列,可能是nvarchar(max)甚至是xml。虽然看起来您使用的是价值属性设计,但您在原始问题中没有解释您的模式,因此有点难以展开。 – 2010-03-08 18:48:50
你可以尝试:'CAST(CustomColumns.query('// TestName')AS nVarchar(8000))',它只在你的XML小于8000个字符时才起作用。 – 2010-03-08 18:50:49