SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW [dbo].[viewProductExportUpdated2]
AS
SELECT dbo.ProductCategories.ProductCategoryID AS ProductCode, dbo.ProductCategories.ProductCategoryName AS ProductTitle,
dbo.Products.ShortDescription AS ProductShortDesc, dbo.Products.LongDescription AS ProductLongDesc,
CAST(dbo.Products.ProductXML AS XML) AS ProdXml, ProdXml.value('data(Products/PackSize)[1]', 'nvarchar(max)') AS ProductPackSize
FROM dbo.ProductCategories INNER JOIN
dbo.Products ON dbo.ProductCategories.ProductCategoryID = dbo.Products.ProductCategoryID
WHERE (dbo.ProductCategories.Deleted = 0)
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
我正在尝试将一个ntext列(ProductXML)转换为xml,然后对该案例运行选择。
但是我收到以下错误: 消息4121,级别16,状态1,过程viewProductExportUpdated2,第4行 找不到列“ProdXml”或用户定义的函数或聚合“ProdXml.value”,或者名称不明确。
该网站是旧网站,我们没有时间将coloumn更改为xml等。
感谢
麦克
答案 0 :(得分:1)
查询中唯一不使用列别名的部分是抛出错误的部分,即:
ProdXml.value('data(Products/PackSize)[1]', 'nvarchar(max)') AS ProductPackSize
将它更改为dbo.ProdXml会修复错误还是生成另一个错误?
答案 1 :(得分:0)
这不是对xml的CAST。它将是:
CAST(ProdXml /* but the question text says ProductXML */, nvarchar(max))
现在,粉碎XML需要更多信息,例如样本和所需的输出。 也许是另一个问题,还是更新这个?