it-source

긴 텍스트 열이 있는 테이블을 JSON 배열로 변환

criticalcode 2022. 10. 30. 11:08
반응형

긴 텍스트 열이 있는 테이블을 JSON 배열로 변환

마리아를 쓰고 있어요.DB 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"
    }
  }
]

감사해요.

MariaDB에 고유하고 MySQL에 존재하지 않는 Just 함수는 다음 항목에 적용될 수 있습니다.parameters기둥.

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

Demo

언급URL : https://stackoverflow.com/questions/65159801/convert-table-to-json-array-with-longtext-column

반응형