我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
当前回答
写条件的一种更简短的方法:
WHERE some_col > ''
因为null > "会产生unknown,所以它会过滤掉空字符串和空字符串。
其他回答
我的意见。
在MySQL中,你可以使用COALESCE函数:
返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。
所以你可以这样简化你的查询:
SELECT * FROM table WHERE COALESCE(some_col, '') = '';
SELECT column_name FROM table_name WHERE column_name IN (NULL, '')
如果你想在做ORDER BY时最后呈现NULL值,试试这个:
SELECT * FROM my_table WHERE NULLIF(some_col, '') IS NULL;
在我的例子中,在数据导入期间在列中输入了空格,尽管它看起来像一个空列,但它的长度是1。所以首先我用length(column)检查了空列的长度,然后在此基础上我们可以编写搜索查询
SELECT * FROM table WHERE LENGTH(column)= 0;
获取包含NULL, 0, ", '', ''的行
SELECT * FROM table WHERE some_col IS NOT TRUE;
获取没有NULL, 0, ", '', ''的行
SELECT * FROM table WHERE some_col IS TRUE;