我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?

(e.g. null or '' or '  ' or '      ' and ...)

当前回答

另一种方法没有WHERE,试试这个..

将选择空值和空值

SELECT ISNULL(NULLIF(fieldname,''))  FROM tablename

其他回答

try

SELECT 0 IS NULL ,  '' IS NULL , NULL IS NULL

-> 0, 0, 1

or

SELECT ISNULL('  ') , ISNULL( NULL )
 -> 0 ,1

参考

如果你想在做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;

我的意见。

在MySQL中,你可以使用COALESCE函数:

返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

所以你可以这样简化你的查询:

SELECT * FROM table WHERE COALESCE(some_col, '') = '';