반응형
Maria의 JSON 값 비교DB
MariaDB의 2개의 JSON 값을 비교하려면 어떻게 해야 하나요?다음과 같은 두 가지 값{"b": 1, "a": 2}
그리고.{"a": 2, "b": 1}
같아야 합니다.MariaDB에는 JSON 값의 요소를 재정렬하는 기능이 포함되어 있습니까?
이러한(비공통) 비교가 필요한 경우 저장하기 전에 표준적인 방법으로 JSON을 구축하십시오.당신처럼 단순한 JSON에게 확실한 방법은 키를 알파벳 순으로 정렬하는 것입니다.이 방법은 JSON에 사용하는 "encode" 라이브러리에 따라 달라집니다.
JSON_EXTRACT 를 사용합니다.JSON_EXTRACT 는, JSON 문자열내의 디짓의 위치에 관계없이 사용할 수 있습니다.
쿼리
SELECT
JSON_EXTRACT(@json_string_1, '$.a') AS a1
, JSON_EXTRACT(@json_string_2, '$.a') AS a2
, JSON_EXTRACT(@json_string_1, '$.b') AS b1
, JSON_EXTRACT(@json_string_2, '$.b') AS b2
FROM (
SELECT
@json_string_1 := '{"b":1,"a":2}'
, @json_string_2 := '{"a":2,"b":1}'
)
AS
json_strings
결과
a1 a2 b1 b2
------ ------ ------ --------
2 2 1 1
이제 이 결과를 전달된 표로 사용하여 a1이 a2이고 b1이 b2인지 확인합니다.
쿼리
SELECT
1 AS json_equal
FROM (
SELECT
JSON_EXTRACT(@json_string_1, '$.a') AS a1
, JSON_EXTRACT(@json_string_2, '$.a') AS a2
, JSON_EXTRACT(@json_string_1, '$.b') AS b1
, JSON_EXTRACT(@json_string_2, '$.b') AS b2
FROM (
SELECT
@json_string_1 := '{"b":1,"a":2}'
, @json_string_2 := '{"a":2,"b":1}'
)
AS
json_strings
)
AS json_data
WHERE
json_data.a1 = json_data.a2
AND
json_data.b1 = json_data.b2
결과
json_equal
------------
1
면책사항:나는 마리아 밑에서 일한다.DB
사용 방법의 예에 대해서는, https://dba.stackexchange.com/a/300235/208895 를 참조해 주세요.JSON_EQUALS
10.7 현재 이용 가능합니다.
언급URL : https://stackoverflow.com/questions/46734547/compare-json-values-in-mariadb
반응형
'source' 카테고리의 다른 글
웹 팩에서 jQuery 플러그인 종속성 관리 (0) | 2022.11.26 |
---|---|
VueJ에서의 HTTP 요청 재귀 전송s (0) | 2022.11.26 |
이것은 MariaDB의 ROUND 기능의 오동작입니까? (0) | 2022.11.26 |
지속성 중에 JPA 필드를 무시하는 가장 쉬운 방법은 무엇입니까? (0) | 2022.11.26 |
커스텀 컴퍼레이터를 사용하여 int 배열을 정렬하려면 어떻게 해야 합니까? (0) | 2022.11.26 |