Отображать столбец, только если он не нулевой

0

Мне нужно отобразить конкретный столбец в моем SQL-результате, только если он не является нулевым. Если он равен нулю, я не хочу, чтобы этот столбец появлялся вообще в моем результате.

Есть ли способ выразить это условие в SQL?

  • 0
    Я думаю, это невозможно. И я не могу придумать, как с этим справиться. Не могли бы вы объяснить немного больше?
  • 0
    Я пытаюсь создать таблицу для отображения на веб-странице. Столбцы в этой таблице зависят от того, что находится в базе данных. Если в определенном столбце ничего нет, то нет смысла его отображать.
Показать ещё 1 комментарий
Теги:

4 ответа

3
Лучший ответ

Это не имеет смысла, потому что запрос может возвращать несколько строк. Одна строка может иметь значение для рассматриваемого столбца, а следующая может не иметь значения. Тогда условный столбец создаст структурную несогласованность между возвращаемыми строками.

2

Нет, это не...

  • 0
    Выхода нет?
  • 0
    Да нет пути. Select всегда имеет фиксированное количество возвращаемых столбцов, что является безусловным.
2

Это невозможно, и действительно не нужно. Вам нужно будет иметь фиксированное количество столбцов, просто нет другого пути. Но это не ваша проблема, вы этого совсем не хотите!

Запросы - это просто получить данные, а не для представления данных. Вы должны просто восстановить его и скрыть столбец, если все значения null.

1

SQL обычно не позволяет вам рассуждать о свойствах целых столбцов. Условия находятся на свойствах строк. Поэтому нет способа сказать "если все значения в этом наборе этого столбца равны нулю...". Однако вы можете тривиально ограничиться строками, которым не хватает свойства.

Если вы хотите показать столбец только в том случае, если он не является нулевым для каждой строки, вы можете сделать COUNT(*) WHERE... общее условие... AND that_column IS NULL, а затем повторить запрос, включая столбец, если первый результат равен 0 и исключая его в противном случае. Но я не уверен, почему вы хотели бы сделать такую ​​вещь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню