sql-server - 如何在 XML 中转换聚合函数

标签 sql-server xml tsql xquery-sql

在 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/

相关文章:

sql-server - 如何使 FileStream 文件可供 Web 应用程序使用

SQL 选择列 WHERE 值 IN GROUP BY 子句 BY 不同

SQL Server 2008 查询使用参数从 XML 中选择数据

SQL XML 查找和替换

sql - 在 SQL Server 上对数据进行分组

sql - PowerShell 函数将多个 SQL 查询输出为 CSV

mysql - MySQL @currant := @currank + 1 in MS SQL? 相当于什么

sql-server - 从 TADOConnection 对象确定 ODBC 数据库驱动程序?

xml - 在 ActionScript 3 中保存到没有用户提示对话框的 XML 文件?

xml - cvc-复杂类型.2.4.b : The content of element 'tns:patient' is not complete