MySQL - 选择具有空列的行
Posted
技术标签:
【中文标题】MySQL - 选择具有空列的行【英文标题】:MySQL - Selecting rows with null columns 【发布时间】:2013-01-01 16:45:57 【问题描述】:如何选择任何包含空列或空列的行?
我正在尝试对我的表进行检查,我想查看我的任何行是否包含不包含值的列..
示例表:演示
+----+------+------+
| ID | col1 | col2 |
+----+------+------+
| 1 | VAL1 | Val2 |
| 2 | NULL | Val2 |
| 3 | VAL1 | NULL |
+----+------+------+
我希望查询返回第 2-3 行,注意我在实际表中有很多列,所以我不想在查询中使用“where or”来包含它。
用mysql能做到吗?
【问题讨论】:
要避开第一条记录,取其他记录吗? 我想获取所有包含空列的行,即使我不知道列名:) ***.com/a/20161429/1031945 【参考方案1】:select * from tablename where col1 is NULL or col2 is NULL
结果
ID | col1 | col2
------------------
2 | NULL | Val2
3 | VAL1 | NULL
【讨论】:
【参考方案2】:不需要对列名进行硬编码的最佳答案是:
DECLARE @sqlStr 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 @sqlStr = 'select * from ' + yourtablename + ' where ' + @sqlStr
PRINT @sqlStr
EXEC (@sqlStr)
【讨论】:
下一代 :)【参考方案3】:如果你真的不想使用 OR,你可以使用这个:
SELECT *
FROM demo
WHERE concat(col1, col2, ...) is Null
或者这个:
SELECT *
FROM demo
WHERE col1+col2+... is null
虽然它使查询更容易编写,但它不会使它更快。我建议你只使用 OR。
【讨论】:
【参考方案4】:SELECT
IFNULL(col1,0),
IFNULL(col2,0)
FROM mytable
WHERE col1 IS NULL or col2 IS NULL
您可以使用 IFNULL 设置默认值
【讨论】:
我相信,当您想将空列填充为零时使用它:/ 但是,OP只需要显示相关信息,其列包含NULL值,但是,努力。 :)以上是关于MySQL - 选择具有空列的行的主要内容,如果未能解决你的问题,请参考以下文章