我试图将这个Decompress CLR功能与CROSS APPLY配合使用,但到目前为止我还没有成功。解压缩功能正常。问题是解压缩列并调用.nodes函数,如下所示。如果有人能帮助我,那就太好了。
SELECT
T0.Chassis.value('Model', 'varchar(50)')
FROM ANYTABLE c
CROSS APPLY CAST( dbo.Decompress( CAST(content AS nvarchar(max)) ) AS xml).nodes('this part is correct') AS T0(Chassis)
答案 0 :(得分:7)
您需要将强制转换拆分为XML和.nodes部分。
SELECT T0.Chassis.value('Model', 'varchar(50)')
FROM ANYTABLE c
CROSS APPLY (select CAST( dbo.Decompress( CAST(content AS nvarchar(max)) ) AS xml)) as T(X)
CROSS APPLY T.X.nodes('this part is correct') AS T0(Chassis)
答案 1 :(得分:0)
感谢Mikael,但我找到了答案:
根据microsoft文档:
nodes()函数不能直接应用于用户定义函数的结果。要将nodes()函数与标量用户定义函数的结果一起使用,可以将用户定义函数的结果分配给变量,也可以使用派生表为用户定义函数返回分配列别名值,然后使用CROSS APPLY从别名中选择。
http://msdn.microsoft.com/en-us/library/ms188282(v=SQL.90).aspx