我想从MySQL表中获取没有值的列数,这意味着它们为空或零。
其实我想衡量一下员工档案,他填写了多少字段,还剩下多少字段?
我正在将MySQL与PHP结合使用。
答案 0 :(得分:0)
除了手动汇总每一列之外,我看不到其他方法。这是一种简洁的方法:
SELECT
empId,
IF(COALESCE(col1, '') = '', 1, 0) +
IF(COALESCE(col2, '') = '', 1, 0) +
...
IF(COALESCE(colN, '') = '', 1, 0) AS num_cols_missing
FROM yourTable;
我们可以将NULL
列值替换为空字符串,然后将该结果与空字符串进行比较。这意味着我们可以使用单个逻辑表达式检查NULL
是否为空。
答案 1 :(得分:0)
使用此架构Employee(id, fname, lname, dob)
如果您要查找包含Employee
或空白NULL
的{{1}}行的数量,则可以执行以下操作...
fname
当然,您可以扩展它以找到任何SELECT COUNT(fname) AS 'number of empty fnames'
FROM `Employee`
WHERE `fname` IS NULL
OR `fname` = '';
或空白字段/列。
答案 2 :(得分:0)
DECLARE @Str VARCHAR(max) = (
SELECT stuff((
SELECT 'and ' + c.NAME + ' is null '
FROM sys.columns c
WHERE object_name(object_id) = 'yourtablename'
ORDER BY c.NAME
FOR XML PATH('')
), 1, 3, '')
)
SET @Str = 'select * from ' + yourtablename + ' where ' + @Str
PRINT @Str
EXEC (@Str)