JSON_ARRAY не отправляет пустой список в MariaDB

У меня проблема в 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 ответ

Вариант с использованием IFNULL:

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

См. Dbfiddle.

Другие вопросы по тегам