source

Maria의 JSON 값 비교DB

factcode 2022. 11. 26. 13:53
반응형

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_EQUALS10.7 현재 이용 가능합니다.

언급URL : https://stackoverflow.com/questions/46734547/compare-json-values-in-mariadb

반응형