반응형
MariaDB에서 JSON data를 통한 읽기/검색(array의 여러 객체: deep search - syntax question)
MariaDB 데이터베이스의 테이블에 있는 필드에는 다음과 같은 JSON 구조가 있습니다.
table column name: BcDJSON
{"placards":
[
{"barcode":"???","destination":"???","weight":"???"},
{"barcode":"???","destination":"???","weight":"???"},
{etc..}
]
}
my sql 쿼리 전류는 다음과 같습니다.
"SELECT * from table WHERE BcDJSON LIKE '%.$value.%'";
하지만 그것이 안정적인 코드로 이어지지는 않습니다.JSON_EXTRACT를 사용해 보았지만 MariaDB에서 객체를 객체 배열로 이동합니다. 몇 가지 변형을 시도했지만 문서를 읽는 것은 질문에 대답하지 않았습니다.JSON_EXT는 제가 여기서 정말 사용하고 싶은 물건이라도 되는 건가요?그 JSON 구조에 바코드가 있는 행 전체를 반환해야 합니다.
구문을 사용해 본 적이 있습니다. (??)= 유효한 값)
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards, $.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards.$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards->$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards', '$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards.barcode') = '???'
값이 다음 중 하나에서 찾을 수 있는지 확인하기 위해 를 사용해야 합니다.barcode값:
SELECT *
FROM datawork
WHERE JSON_SEARCH(BcDJSON, 'one', '???', NULL, '$.placards[*].barcode') IS NOT NULL
예를 들어,
CREATE TABLE datawork (id int auto_increment primary key,
BcDJSON TEXT);
INSERT INTO datawork (BcDJSON) values
('{"placards":
[
{"barcode":"123","destination":"a","weight":"1"},
{"barcode":"456","destination":"b","weight":"2"}
]
}'),
('{"placards":
[
{"barcode":"789","destination":"a","weight":"1"},
{"barcode":"123","destination":"b","weight":"2"}
]
}');
SELECT *
FROM datawork
WHERE JSON_SEARCH(BcDJSON, 'one', '123', NULL,'$.placards[*].barcode') IS NOT NULL
출력:
id BcDJSON
1 {"placards": [ {"barcode":"123","destination":"a","weight":"1"}, {"barcode":"456","destination":"b","weight":"2"} ] }
2 {"placards": [ {"barcode":"789","destination":"a","weight":"1"}, {"barcode":"123","destination":"b","weight":"2"} ] }
언급URL : https://stackoverflow.com/questions/59832363/reading-searching-through-json-data-in-mariadb-multiple-objects-in-arrays-deep
반응형
'programing' 카테고리의 다른 글
| 업로드 전에 파일 크기, 이미지 너비 및 높이 가져오기 (0) | 2023.10.25 |
|---|---|
| include 또는 include_once 문에 dirname(_FILE__)을 사용하는 이유는 무엇입니까? (0) | 2023.10.25 |
| jQuery 바인딩 클릭 *Anything* 그러나 *Element* (0) | 2023.10.20 |
| MySQL 문이 열 값을 변경하기 전에 행을 정렬하는 것 같습니다. 값이 변경된 후 정렬해야 합니다. (0) | 2023.10.20 |
| 카르마가 주니트 플러그인을 로드할 수 없습니다. (0) | 2023.10.20 |