JSON 형태로 저장된 데이터에서 할 때 사용하는 함수이다.
{
"price": 100,
"qty": 3
}
SELECT JSON_EXTRACT(json_data, '$.price')
FROM your_table;
// 100
추출한 값들을 전부 더하는 함수이다.
SELECT SUM(JSON_EXTRACT(json_data, '$.price')) AS total_price
FROM your_table;
→ 각 행의 JSON에서 price
값을 뽑아서 전부 더한 total_price
를 구하게 된다.
JSON_EXTRACT
는 JSON 값을 그대로 반환해서, 숫자를 뽑아도 '"100"' 이런 식으로 문자열처럼 나온다.
그래서 합계를 정확히 구하려면 CAST
또는 ->>
같은 방식으로 숫자로 변환해주는 게 좋다.
SELECT SUM(CAST(JSON_EXTRACT(json_data, '$.price') AS UNSIGNED)) AS total_price
FROM your_table;
// MySQL 5.7+
SELECT SUM(json_data->>'$.price') AS total_price
FROM your_table;