2016-07-07 6 views
1

Мне нужно написать запрос, который будет смотреть на таблицу, и выбрать из него любые/все столбцы (столбцы), которые имеют ВСЕ NULL строки.SQL- Только выбор столбцов NULL

Я предпочел бы не говорить «SELECT (имя каждого столбца)», но предпочел бы сказать, «SELECT (из всей таблицы, эти столбцы) WHERE (строки все NULL).

Я знаю о CASE и WHEN, но я понимаю, что столбцы должны быть конкретно указаны в инструкции select. Я буду использовать этот запрос во многих разных таблицах с разными размерами и именами столбцов, поэтому я хотел бы, чтобы запрос был универсальным.

Я использую SQL в Жаба с БД Vertica

Это то, что мои таблицы похожи на:.

TABLE_with_null

Эта таблица содержит столбцы мне нужен запрос. Столбцы, которые мне нужно запросить, такие, как «owner_id», NOT TYPE_NAME, NULLABLE и т. Д. Каждая строка в ЭТОЙ таблице, на самом деле является столбцом с такими-то многими значениями, и именно этим значениям мне нужно выполнить мой запрос.

«Просто»: если столбец имеет ВСЕ NULL строки, мне нужно определить и/или выбрать его.

Любые предложения? % Solved ^^^%

Я нашел этот пример способа прокрутки столбцов, но, несмотря на мои исследования, я все еще испытываю трудности с пониманием всего этого.

Например: как отличается col_names от column_name? То же самое для текста в выражении FROM и WHERE. Должны ли те, что не оба названия таблицы? Тогда что означает found_rows()?

DECLARE col_names CURSOR FOR 
    SELECT column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' 
    ORDER BY ordinal_position; 

select FOUND_ROWS() into num_rows; 

SET i = 1; 
the_loop: LOOP 

    IF i > num_rows THEN 
     CLOSE col_names; 
     LEAVE the_loop; 
    END IF; 

    FETCH col_names 
    INTO col_name;  

    //do stuff 

    SET i = i + 1; 
END LOOP the_loop; 
+3

показать нам некоторые данные выборки таблицы и ожидаемый результат! – jarlh

+0

У вас действительно есть таблицы, содержащие строки, где каждый столбец имеет значение null? Итак, на столе нет первичного ключа? – Boneist

+0

В представленном изображении примером может быть «примечания» (все значения в столбце). Учитывая, что вам нужно получить? Все ненулевые столбцы? – apokryfos

ответ

0

Как я понимаю, вы хотите определить, какие столбцы имеют значения NULL для всех строк и не хотят вводить все столбцы, не так ли?

Если то так, то это, как я хотел бы сделать:

1) Построить функцию, которая принимает в качестве входного параметра и делает: --FYI: это псевдо-код. Я не имею MySQL здесь, чтобы получить правильный синтаксис

select sum(
      case when CAST(<column_name> as varchar(5200)) is not null then 1 else 0 end --5200 seems to be your longer column 
     ) 
from YOUR_TABLE 
--the idea is to cast the column as anythig; if it is null, it gets a 0. 
--If the sum across the rows is 0, it means that all the rows are null 

2) Loop через имена столбцов и вызвать функцию

Смежные вопросы