SET STATISTICS XML ON;
DECLARE @x XML = (SELECT 'hi' "@id" FOR XML PATH ('this'), root ('xml'));
表达式中的类型转换 (CONVERT_IMPLICIT(xml,[Expr1001],0)) 可能会影响查询计划选择中的“CardinalityEstimate”
为什么会发生转换?我认为这FOR XML
导致结果XML
已经是类型。如果可以/应该忽略此警告,我如何阻止警告出现在执行计划中(这样当我调试带有类似警告的更大查询时,它不会分散我对实际问题的注意力)?
FOR XML PATH
表达式的返回类型是NVARCHAR(MAX)
, 不是XML
。令我感到困惑的是,SSMS 呈现任何命名的列
XML_F52E2B61-18A1-11d1-B105-00805F49916B
,就好像它具有XML
数据类型一样。如果我运行以下命令,我会在 SSMS 中获得一个可点击的 XML 结果单元格:通过让 SQL Server 吐出类型转换错误,我能够找出实际类型:
要完全修复警告,只需将
TYPE
指令添加到FOR XML
子句中: