在 SQL Server 2008 中。
我需要执行这样的查询:
DECLARE @x AS xml
SET @x=N'<r><c>First Text</c></r><r><c>Other Text</c></r>'
SELECT @x.query('fn:max(r/c)')
但什么都不返回(显然是因为将 xdt:untypedAtomic 转换为数字)
如何将 r/c“转换”为 varchar?
有点像
SELECT @x.query('fn:max(«CAST(r/c «AS varchar(20))»)')
编辑: 使用节点函数 MAX 来自 T-SQL no fn:max function 在这段代码中:
DECLARE @x xml;
SET @x = '';
SELECT @x.query('fn:max((1, 2))');
SELECT @x.query('fn:max(("First Text", "Other Text"))');
两个查询都预期返回:2 和“其他文本” fn:max 可以临时评估字符串表达式。但是第一个查询不起作用。 如何强制字符串参数为 fn:max?
最佳答案
DECLARE @x AS xml
, @val nvarchar(100) = 'Other Text'
SET @x=N'<r><c>First Text</c></r><r><c>Other Text</c></r>'
SELECT @x.query('fn:max(for $r in //r return xs:string ($r))')
关于sql-server - 如何在 XML 中转换聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520934/