我使用了"JSON_VALUE">函数。它可以根据我的要求正常工作。我想知道如何跳过json字段中区分大小写的部分。请查看我的示例jsonData
Json数据:-
{
"factoryID": "4",
"yearID": "2",
"loggedInUserID": "43",
"pageIndex": "1",
"pageSize": "10",
"searchString": "",
"whereString": ""
}
但当我在Json_Value中以Camel大小写给出字段名称时,它返回null。请建议如何跳过"中的区分大小写;Json_ Value
SQL:-
set @FactoryID = JSON_VALUE(@JsonData,'$.FactoryID')
set @YearID = JSON_VALUE(@JsonData,'$.YearID')
对于Json细节(阵列(:-
SELECT
JSON_VALUE(A.value,'$.FactoryID')FactoryID,
JSON_VALUE(A.value,'$.YearID')YearID,
JSON_VALUE(A.value,'$.CreatedUserID')CreatedUserID,
JSON_VALUE(A.value,'$.ModifiedUserID')ModifiedUserID,
JSON_VALUE(A.value,'$.TempID')TempID
FROM OPENJSON(@JsonDetail) as A
恐怕没有内置的方法可以做到这一点
但是有几个选项可用:
-
您可以使用返回一组(
key
、value
、type
(的OPENJSON
,并直接使用键/值对(尽管在您需要的值是对象的情况下,这种方法不起作用(:DECLARE @json VARCHAR(500) = '{ "factoryID": "4", "yearID": "2", "loggedInUserID": "43", "pageIndex": "1", "pageSize": "10", "searchString": "", "whereString": "" }'; DECLARE @FactoryID INT, @YearID INT; SELECT @YearID = IIF(LOWER([key]) = 'yearid', [value], @YearID), @FactoryID = IIF(LOWER([key]) = 'factoryid', [value], @FactoryID) FROM OPENJSON(@json); SELECT @YearID AS YearID, @FactoryID AS FactoryID;
-
另一种选择是创建一个自定义CLR函数,以不区分大小写的方式解析JSON。