1
我试图运行以下查询,从示例数据库中的客户记录生成JSON字符串。SQL FOR JSON转换问题
SELECT
CustomerID,
CustomerName,
PersonID AS [CustomerContact.PersonID],
SUBSTRING(FullName, 0, CHARINDEX(' ', FullName)) AS [CustomerContact.FirstName],
SUBSTRING(FullName, CHARINDEX(' ', FullName) + 1, LEN(FullName)) AS [CustomerContact.LastName],
EmailAddress AS [CustomerContact.Email],
DeliveryAddressLine1 AS [CustomerContact.Address1],
DeliveryAddressLine2 AS [CustomerContact.Address2],
CityName AS [CustomerContact.City],
StateProvinceName AS [CustomerContact.State],
DeliveryPostalCode AS [CustomerContact.Zip],
CustomerCategoryName AS CustomerType,
WebsiteURL As Website
FROM
Sales.Customers
LEFT JOIN Sales.CustomerCategories
ON Customers.CustomerCategoryID = CustomerCategories.CustomerCategoryID
LEFT JOIN Application.Cities
ON Customers.DeliveryCityID = Cities.CityID
LEFT JOIN Application.StateProvinces
ON Cities.StateProvinceID = StateProvinces.StateProvinceCode
LEFT JOIN Application.People
ON Customers.CustomerID = People.PersonID
WHERE
Customers.CustomerID = 200
FOR JSON PATH
当我尝试这一点,它只是引发以下错误:
Conversion failed when converting the ****** value '******' to data type ******.
有谁知道这是什么意思?
编辑:***的字面上显示为星号,而不是隐藏的值。该生产线的错误是Msg 245, Level 16, State 1, Line 1
在这种情况下,这可能意味着您试图将两列用不同的类型等同。你能分享一下*****的内容吗?如果它给你一个行号? – Simon
首先想到的是这一行:ON Cities.StateProvinceID = StateProvinces.StateProvinceCode - 你的意思是加入ID与代码? – Simon
这实际上解决了它,它生成了JSON字符串,但它是...时髦。不是我所期望的。 – user3066571