如何在 XML 中转换聚合函数
在 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))»)')
: 使用 Nodes 函数 MAX 来自 T-SQL,没有 fn:max 函数 在此代码中:
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?
In SQL Server 2008.
I need execute a query like that:
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)')
But return nothing (apparently because convert xdt:untypedAtomic to numeric)
How to "cast" r/c to varchar?
Something like
SELECT @x.query('fn:max(«CAST(r/c «AS varchar(20))»)')
Edit:
Using Nodes the function MAX is from T-SQL no fn:max function
In this code:
DECLARE @x xml;
SET @x = '';
SELECT @x.query('fn:max((1, 2))');
SELECT @x.query('fn:max(("First Text", "Other Text"))');
both query return expected: 2 and "Other Text"
fn:max can evaluate string expression ad hoc. But the first query dont work.
How to force string arguments to fn:max?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这将执行 T-SQL 中的聚合最大函数:
返回
更新后,我想我更好地理解你的问题。不幸的是,这在 MS SQL Server 2008 R2 中似乎无法实现。
产生错误:
根据 Microsoft 类型转换是有效的,但我尚未找到可行的语法。
This will perform the aggregate max function in T-SQL:
Returns
After your update, I think I better understand your question. Unfortunately It looks like this may not be doable in MS SQL Server 2008 R2.
Yields the error:
According to Microsoft the type cast is valid, but I haven't been able to find a syntax that will work.