我正在为我的应用程序中的搜索字段创建一个查询。该查询使用“like”关键字来检查记录中的各种字段。其中一个字段是未命名的 ([{}, {}]) json 数组。数组中的字段全部匹配。我希望能够在不使用索引的情况下检查数组的每个“Value”属性,即“$[0].value”。原因是数组的大小可能会有所不同。以下是数据示例:
[{
"MappedFieldName": "Customer",
"DataType": "string",
"Value": "Mapco Express"
}, {
"MappedFieldName": "Invoice Nbr",
"DataType": "string",
"Value": "31856174"
}, {
"MappedFieldName": "Invoice Document Date",
"DataType": "DateTime",
"Value": "2018-12-25 00:00:00.000"
}, {
"MappedFieldName": "Processing Date",
"DataType": "DateTime",
"Value": "2019-01-04 00:00:00.000"
}, {
"MappedFieldName": "Vendor Name",
"DataType": "string",
"Value": "Bullseye"
}, {
"MappedFieldName": "Account Nbr",
"DataType": "string",
"Value": "0048219"
}, {
"MappedFieldName": "Location #",
"DataType": "string",
"Value": "7520"
}, {
"MappedFieldName": "Amount Invoiced",
"DataType": "decimal",
"Value": "3580.43"
}, {
"MappedFieldName": "Amount Processed",
"DataType": "decimal",
"Value": "3580.43"
}, {
"MappedFieldName": "Invoice Start Date",
"DataType": "DateTime",
"Value": "2018-04-01 00:00:00.000"
}, {
"MappedFieldName": "Invoice End Date",
"DataType": "DateTime",
"Value": "2018-04-01 00:00:00.000"
}]
和
SELECT *
FROM [dbo].[Invoice]
WHERE JSON_VALUE(InvoiceData, '$.Value') like '%' + @searchText + '%'
此查询不起作用,因为我没有指定索引,即'$[0].Value'。