[英]Visual Studio 2010 and Query Designer SQL Problem with XML Path
我對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標記,但是似乎沒有必要。
還有其他人有這個問題嗎? 有誰知道解決方法?
非常感謝您花費時間和精力解決我的問題。
我遇到了類似的問題,而對我來說,解決方法是在每種情況下定義Cast。
例:
從記錄中向左命名AS(SELECT DISTINCT Z.code,(SELECT DISTINCT CAST(B.fname AS varchar(10) +''+ CAST (B.lname AS varchar(10) +'')) ON A.id = B.id WHERE(A.code = Z.code)FOR XML PATH(''))AS EmployeeNames FROM Employees AS Z)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.