SET @db := 'YOUR_DB';
SET @tbl := 'YOUR_TABLE';
SET SESSION group_concat_max_len = 1000000;
SELECT GROUP_CONCAT(q SEPARATOR ' UNION ALL ')
INTO @sql
FROM (
SELECT CONCAT(
'SELECT ', QUOTE(c.column_name), ' AS column_name, ',
'SUM(CASE WHEN ',
CASE
WHEN c.data_type IN ('char','varchar','tinytext','text','mediumtext','longtext','enum','set','json')
THEN CONCAT('`', c.column_name, '` IS NOT NULL AND TRIM(`', c.column_name, '`) <> ', CHAR(39), CHAR(39))
WHEN c.data_type IN ('binary','varbinary','tinyblob','blob','mediumblob','longblob')
THEN CONCAT('`', c.column_name, '` IS NOT NULL AND OCTET_LENGTH(`', c.column_name, '`) > 0')
ELSE
CONCAT('`', c.column_name, '` IS NOT NULL')
END,
' THEN 1 ELSE 0 END) AS non_empty_count, ',
'COUNT(*) AS total_rows ',
'FROM `', c.table_schema, '`.`', c.table_name, '`'
) AS q
FROM information_schema.columns c
WHERE c.table_schema=@db AND c.table_name=@tbl
) s;
-- 비어있는 컬럼만 출력
SET @sql = CONCAT('SELECT column_name FROM (', @sql, ') AS x WHERE non_empty_count = 0');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
'내가 보는 개발 공부 > Mysql' 카테고리의 다른 글
Mysql 덤프 뜨는 방법 (0) | 2025.04.01 |
---|