반응형
JSON 배열에 대한 JSON 함수를 사용하여 레코드 필터링
데이터가 JSON 형식으로 저장된 테이블이 하나 있습니다.견적이 필요한 레코드가 몇 개 있는지 확인해야 합니다.
JSON
[{"id":14,"desc":"Job is incomplete.","quote_required":"Yes"},
{"id":14,"desc":"appointment need to rebook","quote_required":"Yes","start-date":"2021-11-20"}]
아래를 사용하는 것에 대해 달성하려고 합니다.JSON_CONTAINS()
그리고.JSON_EXTRACT()
SELECT COUNT(*)
FROM `products`
WHERE JSON_CONTAINS( JSON_EXTRACT(submit_report, "$.quote_required"), '"Yes"' )
하지만 나는 여기서 0개의 결과를 얻고 있다.
어레이의 각 요소를 검색할 수 있습니다.quote_required
와 동등하다Yes
다음과 같은 반복적인 공통 테이블 표현으로 인덱스 값을 생성함으로써 배열의 0에서 1을 뺀 길이까지 인덱스 값을 사용합니다.
WITH recursive cte AS
(
SELECT 0 AS n
UNION ALL
SELECT n + 1 AS value
FROM cte
WHERE cte.n < ( SELECT JSON_LENGTH(submit_report) - 1 FROM `products` )
)
SELECT SUM(JSON_CONTAINS(JSON_EXTRACT(submit_report, CONCAT("$[",n,"].quote_required")),
'"Yes"')) AS count
FROM cte
JOIN `products`
언급URL : https://stackoverflow.com/questions/65668504/filter-records-using-json-function-for-json-array
반응형
'source' 카테고리의 다른 글
"elseif"와 "else if"는 완전히 동의어입니까? (0) | 2022.12.25 |
---|---|
SQL 선택 3시간 평균 (0) | 2022.12.25 |
도커 워드프레스 컨테이너가 데이터베이스 컨테이너에 연결할 수 없음 (0) | 2022.12.25 |
PHP의 배열에서 특정 값의 인덱스를 가져옵니다. (0) | 2022.12.05 |
PDO 연결을 올바르게 설정하는 방법 (0) | 2022.12.05 |