반응형
MySQL의 개체 배열을 사용하여 JSON 열 쿼리 열
다음 배열의 json 열이 있습니다.
[
{
"id": "24276e4b-de81-4c2c-84e7-eed9c3582a31",
"key": "id",
"type": "input",
},
{
"id": "e0ca5aa1-359f-4460-80ad-70445be49644",
"key": "name",
"type": "textarea",
}
]
ID가 있는 행을 가져오기 위해 다음 쿼리를 시도했습니다.24276e4b-de81-4c2c-84e7-eed9c3582a31
문서 열에는 있지만 결과는 반환되지 않습니다.
select * from jobs WHERE document->'$[*].id' = "24276e4b-de81-4c2c-84e7-eed9c3582a31"
올바른 쿼리 방법 아는 사람?
mysql 5.7을 사용하므로 JSON_CONTAINES는 다음과 같이 쉽게 사용할 수 있습니다.
SELECT JSON_CONTAINS(
'[{"id": "24av","name": "she"},{"id": "e0c2", "name": "another_she"}]',
JSON_OBJECT('id', "e0c2")
);
다음과 같이 시도합니다.
SELECT * FROM jobs WHERE document->'$[*].id' = json_array("24276e4b-de81-4c2c-84e7-eed9c3582a31");
저는 효과가 있지만, 아래 방법이 더 낫다고 생각합니다.
SELECT * FROM jobs WHERE json_contains(document->'$[*].id', json_array("24276e4b-de81-4c2c-84e7-eed9c3582a31"));
사실 그건 쉬워요. 그냥 반품 값이.JSON_TYPE
그러나 끈이나 다른 것은 아닙니다.
혹시 이거?@바마르
SELECT * FROM jobs WHERE JSON_SEARCH(document, "one", "24276e4b-de81-4c2c-84e7-eed9c3582a31", NULL, '$[*].id') IS NOT NULL;
사용할때document->'$[*].id'
모든 ID 속성의 쉼표로 구분된 목록을 반환합니다.이것은 단지 하나의 ID 문자열의 값과 동일하지 않을 것입니다, 만약 오직 하나의 객체가 있지 않다면.document
기둥.
사용하셔야 합니다.JSON_SEARCH()
JSON 값 내에서 일치하는 요소를 검색합니다.
SELECT *
FROM jobs
WHERE JSON_SEARCH(document, "one", "24276e4b-de81-4c2c-84e7-eed9c3582a31", NULL, '$[*].id');
언급URL : https://stackoverflow.com/questions/38797627/query-a-json-column-with-an-array-of-object-in-mysql
반응형
'source' 카테고리의 다른 글
Codable 클래스가 Decodable 프로토콜을 준수하지 않습니다. (0) | 2023.10.16 |
---|---|
Access Database의 모든 테이블을 Excel로 내보내는 방법 - 각 테이블에 대한 시트 (0) | 2023.10.16 |
Concat 함수가 작동하지 않음 - 인수 개수가 잘못되었습니다. (0) | 2023.10.16 |
공유 라이브러리를 정적 라이브러리로 변환하시겠습니까? (0) | 2023.10.16 |
ChildrenOutletContext에 대한 공급자 없음(injectionError) (0) | 2023.10.11 |