Оператор SQL для всех столбцов, не нуль - PullRequest
0 голосов
/ 02 июня 2018

Я работаю над запросом, и моя таблица очень большая, много столбцов.Я не хочу печатать каждый отдельный столбец в предложении where - есть ли способ выбрать все, не записывая их, что-то вроде этого (ниже не работает):

select *
from table t
where t.* is not NULL

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Вы можете попытаться найти поля из таблицы information_schema.columns, а затем выполнить dynamic sql.

следующим образом.

SET @Efields := '';
SET @Esql:='';
SET @Table_Name = 'table1';

select @Efields := GROUP_CONCAT(COLUMN_NAME SEPARATOR ' IS NOT NULL AND ') 
from information_schema.columns
where TABLE_NAME = @Table_Name;
SELECT @Esql:=CONCAT('select * from ',@Table_Name ,'  WHERE ',@Efields,' IS NOT NULL ');

PREPARE stmt1 FROM  @Esql; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;

sqlfiddle: https://www.db -fiddle.com/f/32PisE5bChKSVPzk6LjEP3/0

0 голосов
/ 02 июня 2018

Альтернатива, если вы хотите, в вашем предложении where сделать что-то вроде (при условии, что количество столбцов в таблице равно 10):

Select T.*
from [TABLE] T
where 1|2|3|4|5|6|7|8|9|10 is not null
...