>source

mariaDB 10.3을 사용하고 있으며 테이블이 있습니다.

CREATE TABLE user(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, parameters longtext,  PRIMARY KEY(id));

행 포함 :

INSERT INTO user VALUES (1, 'name1', '{"number": 1, "text": "some text"}'), (2, 'name2', '{"number": 2, "text": "some more text"}');

테이블을 다음과 같이 반환하는 쿼리를 작성하려고합니다. JSON 목적. 지금까지

SELECT CONCAT(
    '[',
      GROUP_CONCAT(JSON_OBJECT('id',id,'name',name,'parameters', parameters)),
    ']'
 ) 
FROM user;

그러나 이것은 다음을 반환합니다.

[
  {"id": 1,
    "name": "name1",
    "parameters": "{\"number\": 1, \"text\": \"some text\"}"
  },
  {
    "id": 2,
    "name": "name2",
    "parameters": "{\"number\": 2, \"text\": \"some more text\"}"
  }
]

적절한 JSON이 아닙니다. 얻으려면 무엇을 변경해야합니까 parameters 제대로 포맷 되었습니까?

내가 얻고 싶은 것은 :

[
  {
    "id": 1,
    "name": "name1",
    "parameters": {
      "number": 1,
      "text": "some text"
    }
  },
  {
    "id": 2,
    "name": "name2",
    "parameters": {
      "number": 2,
      "text": "some more text"
    }
  }
]

감사

  • 답변 # 1

    다만 JSON_COMPACT MariaDB에 적합하고 MySQL에는 존재하지 않는 함수를 parameters 기둥

    SELECT CONCAT(
           '[',
            GROUP_CONCAT(JSON_OBJECT('id',id,
                                     'name',name,'parameters', 
                                      JSON_COMPACT(parameters))),
           ']'
           ) AS "JSON Value"
      FROM user
    
    

    데모

  • 답변 # 2

    열 내용의 불일치를 보상하기위한 약간의 "무력":

    SELECT 
      CONCAT(
        '[',
          GROUP_CONCAT( CONCAT (
                JSON_OBJECT('id',id,'name',name), '", parameters":', parameters)),
        ']'
        )
    FROM user;
    
    

    바이올린 데모

관련 자료

  • 이전 python - Sympy에 의한 방정식의 미분 찾기
  • 다음 android - RecyclerView 어댑터에서 Snackbar를 사용하는 방법