JSON_ARRAY не отправляет пустой список на MariaDB - PullRequest
0 голосов
/ 18 октября 2019

У меня проблема в MariaDB (10.3.18), когда я использую функцию JSON_ARRAY, если у моих подзапросов нет результатов, это не дает мне пустой массив, это дает мне массив с 1 нулевым результатом. .

Пример:

SELECT JSON_ARRAY() // -> [] this is what I want to obtain

SELECT JSON_ARRAY((
    SELECT GROUP_CONCAT(
        JSON_OBJECT(
            'id', id,
            'name', name
        )
    )
    FROM user
    WHERE user.acive = TRUE
)) // -> [null] If I don't have any result

На данный момент я нашел способ противостоять этой проблеме с помощью функции REPLACE, например:

SELECT REPLACE(JSON_ARRAY(null), "[null]", "[]")

Но если естьбыло что-то, чтобы сказать MariaDB, чтобы он посылал пустой результат, а не NULL, это могло бы мне очень помочь!

1 Ответ

0 голосов
/ 19 октября 2019

Опция, использующая IFNULL :

SELECT
  IFNULL(
    (SELECT
      CONCAT('[', GROUP_CONCAT(
        JSON_OBJECT(
          'id', `user`.`id`,
          'name', `user`.`name`
        )
      ), ']')
    FROM `user`
    WHERE `user`.`active` = true),
    JSON_ARRAY()
  );

См. dbfiddle .

...