programing

MySQL에서 JSON 필드 속성의 값을 선택합니다.

muds 2023. 3. 22. 22:15
반응형

MySQL에서 JSON 필드 속성의 값을 선택합니다.

JSON 데이터 유형 필드 내의 속성에 WHERE가 있는 기본 MySQL 쿼리를 작성하려면 어떻게 해야 합니까?SO의 json 필드에 대한 기본 where 절 q를 찾을 수 없습니다.

이와 비슷한데, 물론 이러한 기능은 작동하지 않습니다.

SELECT * from my_table where meta_data->name = 'bob';

SELECT * from my_table where meta_data[name] IS NOT NULL;

json 데이터 유형 필드를 쿼리하는 몇 가지 예:

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.first_name") = 'bob';

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.age") IS NOT NULL;

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.accepted_policy") = true;

mysql 5.7.9 + 사용 시

다음과 같이 할 수도 있습니다(JSON_EXTRACT의 단축키).

SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'

json 데이터 결과가 "따옴표"로 표시되는 경우가 있습니다.JSON_UNQUOTE를 사용할 수도 있고 JSON_EXTract & JSON_UNQUOTE 단축키인 다음 명령을 사용할 수도 있습니다.

SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL

또한 하위 개체 내에서 데이터를 선택하려면:

SELECT meta_data->>"$.address.tel" FROM users WHERE meta_data->>"$.address.street" = "123 Main St"

문서: https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

mysql의 JSON 데이터 유형 필드를 사용한 WHERE 작업에 대해 아래 쿼리 사용

SELECT meta_data->'$.first_name' meta_data FROM users WHERE INSTR(meta_data->'$.first_name','123') > 0

언급URL : https://stackoverflow.com/questions/49053341/mysql-select-where-json-field-property-has-value

반응형