【问题标题】:Visual Studio 2010 and Query Designer SQL Problem with XML PathVisual Studio 2010 和 XML 路径的查询设计器 SQL 问题
【发布时间】:2011-02-08 18:46:53
【问题描述】:

我对 Visual Studio 2010 SQL 感到非常沮丧:

我在 StackOverflow 上找到了有关如何使用 FOR XML PATH('') 将多行中的字符串连接到单行的代码。

当我在查询和视图设计器中编写以下行时(因为大概没有其他方法可以在 Visual Studio 中编写 SQL 然后将其保存为“视图”),我得到的结果不是我想要的:

代码:

Names AS
(SELECT DISTINCT 
  Z.code,
  (SELECT DISTINCT CAST(B.fname + ' ' + B.lname + ' ' AS VARCHAR(MAX))
   FROM Records AS A LEFT OUTER JOIN Employees AS B ON A.id = B.id
   WHERE (A.code = Z.code) FOR XML PATH('')) AS EmployeeNames
 FROM Employees AS Z)

我得到如下结果:

Code  EmployeeNames
----  -------------------------
1234  <Expr1>First Last</Expr1>

为什么?因为 Visual Studio 2010 在它的所有荣耀中添加了“as Expr1”到以下内容:

(SELECT DISTINCT CAST(B.fname + ' ' + B.lname + ' ' AS VARCHAR(MAX))
 FROM Records AS A LEFT OUTER JOIN Employees AS B ON A.id = B.id
 WHERE (A.code = Z.code) FOR XML PATH('')) *as Expr1*

有什么解决方法吗?我注意到问题来自查询和视图设计器解析器......我可以通过在我的代码中的某处放置解析器不支持的随机函数(如 OVER())来故意破坏解析器。这解决了问题,并删除了 XML 标记,但似乎没有必要。

还有其他人有这个问题吗?有人知道解决方法吗?

非常感谢您花时间和精力解决我的问题。

【问题讨论】:

    标签: sql visual-studio-2010


    【解决方案1】:

    我遇到了一些类似的事情,我的解决方法是在每种情况下定义演员。

    例子:

    命名为 (选择不同的 Z码, (SELECT DISTINCT CAST(B.fname AS varchar(10) + ' ' + CAST(B.lname AS varchar(10) + ' ') FROM Records AS A LEFT OUTER JOIN 员工 AS B ON A.id = B.id WHERE (A.code = Z.code) FOR XML PATH('')) AS EmployeeNames 来自员工 AS Z)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多