如何在sql中使用OPENJSON
我试图在JSON数据中使用OpenJSON,但它并没有产生预期的结果。字段_数据中的DB JSON为:如何在sql中使用OPENJSON,sql,json,sql-server,Sql,Json,Sql Server,我试图在JSON数据中使用OpenJSON,但它并没有产生预期的结果。字段_数据中的DB JSON为: { "name":"Test", "Cell-Number":"Test", "CNIC":"12112112", "Person-Name":"Test", "Focal-person-cell-phone":"121212", "Focal-person-CNIC":"12121212", "Religion":"Test",
{
"name":"Test",
"Cell-Number":"Test",
"CNIC":"12112112",
"Person-Name":"Test",
"Focal-person-cell-phone":"121212",
"Focal-person-CNIC":"12121212",
"Religion":"Test",
"Total-teachers":"4",
"Total-students":"37",
"Total-Hosteled-students":"11",
"Government-\/-Private":"Govt",
"Category":"Jamia",
"Total-Gates":"3",
"Registration-number":"211121",
"Security-guard\/watchman":"10",
"Condition":"Test"
}
我试图获取字段\数据列中name等于Test的数据。
我获取数据的查询是
SELECT *
FROM beat_data
WHERE EXISTS (
Select *
FROM OPENJSON(field_data,'$.name')
WHERE Value = 'Test'
)
我感觉我没有正确使用路径。您可以尝试使用
JSON\u VALUE()
输入:
CREATE TABLE #BeatData (
JsonColumn nvarchar(max)
)
INSERT INTO #BeatData
(JsonColumn)
VALUES
(N'{
"name":"Test",
"Cell-Number":"Test",
"CNIC":"12112112",
"Person-Name":"Test",
"Focal-person-cell-phone":"121212",
"Focal-person-CNIC":"12121212",
"Religion":"Test",
"Total-teachers":"4",
"Total-students":"37",
"Total-Hosteled-students":"11",
"Government-\/-Private":"Govt",
"Category":"Jamia",
"Total-Gates":"3",
"Registration-number":"211121",
"Security-guard\/watchman":"10",
"Condition":"Test"
}')
T-SQL:
SELECT *
FROM #BeatData
WHERE JSON_VALUE(JsonColumn, '$.name') = N'Test'
如果要将JSON
数据作为结果集,请尝试以下操作:
SELECT j.*
FROM #BeatData b
CROSS APPLY OPENJSON(b.JsonColumn) WITH (
name varchar(100) '$.name',
[Cell-Number] varchar(100) '$."Cell-Number"',
CNIC varchar(100) '$.CNIC',
[Person-Name] varchar(100) '$."Person-Name"',
[Focal-person-cell-phone] varchar(100) '$."Focal-person-cell-phone"',
[Focal-person-CNIC] varchar(100) '$."Focal-person-CNIC"',
Religion varchar(100) '$.Religion',
[Total-teachers] varchar(100) '$."Total-teachers"',
[Total-students] varchar(100) '$."Total-students"',
[Total-Hosteled-students] varchar(100) '$."Total-Hosteled-students"',
[Government-\/-Private] varchar(100) '$."Government-\/-Private"',
Category varchar(100) '$.Category',
[Total-Gates] varchar(100) '$."Total-Gates"',
[Registration-number] varchar(100) '$."Registration-number"',
[Security-guard\/watchman] varchar(100) '$."Security-guard\/watchman"',
Condition varchar(100) '$.Condition'
) j
WHERE j.name = N'Test'
您好@Zhorov,上面的查询生成了0个结果。。看起来情况不正常。需要注意的点。。我的JSON中没有任何N。@Nadeem'N'
表示后面的字符串是unicode格式的。尝试在没有WHERE
的情况下执行语句以查看实际结果。插入JSON数据时是否需要添加它?它显示的数据没有WHERE类。。但与where类无关。